Sri Yantra MTF - AynetSri Yantra MTF - Aynet Script Overview
This Pine Script generates a Sri Yantra-inspired geometric pattern overlay on price charts. The pattern is dynamically updated based on multi-timeframe (MTF) inputs, utilizing high and low price ranges, and adjusting its size relative to a chosen multiplier.
The Sri Yantra is a sacred geometric figure used in various spiritual and mathematical contexts, symbolizing the interconnectedness of the universe. Here, it is applied to visualize structured price levels.
Scientific and Technical Explanation
Multi-Timeframe Integration:
Base Timeframe (baseRes): This is the primary timeframe for the analysis. The opening price and ATR (Average True Range) are calculated from this timeframe.
Pattern Timeframe (patternRes): Defines the granularity of the pattern. It ensures synchronization with price movements on specific time intervals.
Geometric Construction:
ATR-Based Scaling: The script uses ATR as a volatility measure to dynamically size the geometric pattern. The sizeMult input scales the pattern relative to price volatility.
Pattern Width (barOffset): Defines the horizontal extent of the pattern in terms of bars. This ensures the pattern is aligned with price movements and scales appropriately.
Sri Yantra-Like Geometry:
Outer Square: A bounding box is drawn around the price level.
Triangles: Multiple layers of triangles (primary, secondary, and tertiary) are calculated and drawn to mimic the structure of the Sri Yantra. These triangles converge and diverge based on price levels.
Horizontal Lines: Added at key levels to provide additional structure and aesthetic alignment.
Dynamic Updates:
The pattern recalculates and redraws itself on the last bar of the selected timeframe, ensuring it adapts to real-time price data.
A built-in check identifies new bars in the chosen timeframe (patternRes), ensuring accurate updates.
Information Table:
Displays the selected base and pattern timeframes in a table format on the top-right corner of the chart.
Allows traders to see the active settings for quick adjustments.
Key Inputs
Style Settings:
Pattern Color: Customize the color of the geometric patterns.
Size Multiplier (sizeMult): Adjusts the size of the pattern relative to price movements.
Line Width: Controls the thickness of the geometric lines.
Timeframe Settings:
Base Resolution (baseRes): Timeframe for calculating the pattern's anchor (default: daily).
Pattern Resolution (patternRes): Timeframe granularity for the pattern’s formation.
Geometric Adjustments:
Pattern Width (barOffset): Horizontal width in bars.
ATR Multiplier (rangeSize): Vertical size adjustment based on price volatility.
Scientific Concepts
Volatility Representation:
ATR (Average True Range): A standard measure of market volatility, representing the average range of price movements over a defined period. Here, ATR adjusts the vertical height of the geometric figures.
Geometric Symmetry:
The script emulates symmetry similar to the Sri Yantra, aligning with the principles of sacred geometry, which often appear in nature and mathematical constructs. Symmetry in financial data visualizations can aid in intuitive interpretation of price movements.
Multi-Timeframe Fusion:
Synchronizing patterns with multiple timeframes enhances the relevance of overlays for different trading strategies. For example, daily trends combined with hourly patterns can help traders optimize entries and exits.
Visual Features
Outer Square:
Drawn to encapsulate the geometric structure.
Represents the broader context of price levels.
Triangles:
Three layers of interlocking triangles create a fractal pattern, providing a visual alignment to price dynamics.
Horizontal Lines:
Emphasize critical levels within the pattern, offering visual cues for potential support or resistance areas.
Information Table:
Displays the active timeframe settings, helping traders quickly verify configurations.
Applications
Trend Visualization:
Patterns overlay on price movements provide a clearer view of trend direction and potential reversals.
Volatility Mapping:
ATR-based scaling ensures the pattern adjusts to varying market conditions, making it suitable for different asset classes and trading strategies.
Multi-Timeframe Analysis:
Integrates higher and lower timeframes, enabling traders to spot confluences between short-term and long-term price levels.
Potential Enhancements
Add Fibonacci Levels: Overlay Fibonacci retracements within the pattern for deeper price level insights.
Dynamic Alerts: Include alert conditions when price intersects key geometric lines.
Custom Labels: Add text descriptions for critical intersections or triangle centers.
This script is a unique blend of technical analysis and sacred geometry, providing traders with an innovative way to visualize market dynamics.
ابحث في النصوص البرمجية عن " TABLE "
Stationarity Test: Dickey-Fuller & KPSS [Pinescriptlabs]
📊 Kwiatkowski-Phillips-Schmidt-Shin Model Indicator & Dickey-Fuller Test 📈
This algorithm performs two statistical tests on the price spread between two selected instruments: the first from the current chart and the second determined in the settings. The purpose is to determine if their relationship is stationary. It then uses this information to generate **visual signals** based on how far the current relationship deviates from its historical average.
⚙️ Key Components:
• 🧪 ADF Test (Augmented Dickey-Fuller):** Checks if the spread between the two instruments is stationary.
• 🔬 KPSS Test (Kwiatkowski-Phillips-Schmidt-Shin):** Another test for stationarity, complementing the ADF test.
• 📏 Z-Score Calculation:** Measures how many standard deviations the current spread is from its historical mean.
• 📊 Dynamic Threshold:** Adjusts the trading signal threshold based on recent market volatility.
🔍 What the Values Mean:
The indicator displays several key values in a table:
• 📈 ADF Stationarity:** Shows "Stationary" or "Non-Stationary" based on the ADF test result.
• 📉 KPSS Stationarity:** Shows "Stationary" or "Non-Stationary" based on the KPSS test result.
• 📏 Current Z-Score:** The current Z-score of the spread.
• 🔗 Hedge Ratio:** The relationship coefficient between the two instruments.
• 🌐 Market State:** Describes the current market condition based on the Z-score.
📊 How to Interpret the Chart:
• The main chart displays the Z-score of the spread over time.
• The green and red lines represent the upper and lower thresholds for trading signals.
• The area between the **Z-score** and the thresholds is filled when a trading signal is active.
• Additional charts show the **statistics of the ADF and KPSS tests** and their critical values.
**📉 Practical Example: NVIDIA Corporation (NVDA)**
Looking at the chart for **NVIDIA Corporation (NVDA)**, we can see how the indicator applies in a real case:
1. **Main Chart (Top):**
• Shows the **historical price** of NVIDIA on a weekly scale.
• A general **uptrend** is observed with periods of consolidation.
2. **KPSS & ADF Indicator (Bottom):**
• The lower chart shows the KPSS & ADF Model indicator applied to NVIDIA.
• The **green line** represents the Z-score of the spread.
• The **green shaded areas** indicate periods where the Z-score exceeded the thresholds, generating trading signals.
3. **📋 Current Values in the Table:**
• **ADF Stationarity:** Non-Stationary
• **KPSS Stationarity:** Non-Stationary
• **Current Z-Score:** 3.45
• **Hedge Ratio:** -164.8557
• **Market State:** Moderate Volatility
4. **🔍 Interpretation:**
• A Z-score of **3.45** suggests that NVIDIA’s price is significantly above its historical average relative to **EURUSD**.
• Both the **ADF** and **KPSS** tests indicate **non-stationarity**, suggesting **caution** when using mean reversion signals at this moment.
• The market state "Moderate Volatility" indicates noticeable deviation, but not extreme.
---
**💡 Usage:**
• **When Both Tests Show Stationarity:**
• **🔼 If Z-score > Upper Threshold:** Consider **buying the first instrument** and **selling the second**.
• **🔽 If Z-score < Lower Threshold:** Consider **selling the first instrument** and **buying the second**.
• **When Either Test Shows Non-Stationarity:**
• Wait for the relationship to become **stationary** before trading.
• **Market State:**
• Use this information to evaluate **general market conditions** and adjust your trading strategy accordingly.
**Mirror Comparison of the Same as Symbol 2 🔄📊**
**📊 Table Values:**
• **Extreme Volatility Threshold:** This value is displayed when the **Z-score** exceeds **100%**, indicating **extreme deviation**. It signals a potential **trading opportunity**, as the spread has reached unusually high or low levels, suggesting a **reversion or correction** in the market.
• **Mean Reversion Threshold:** Appears when the **Z-score** begins returning towards the mean after a period of **high or extreme volatility**. It indicates that the spread between the assets is returning to normal levels, suggesting a phase of **stabilization**.
• **Neutral Zone:** Displayed when the **Z-score** is near **zero**, signaling that the spread between assets is within expected limits. This indicates a **balanced market** with no significant volatility or clear trading opportunities.
• **Low Volatility Threshold:** Appears when the **Z-score** is below **70%** of the dynamic threshold, reflecting a period of **low volatility** and market stability, indicating fewer trading opportunities.
Español:
📊 Indicador del Modelo Kwiatkowski-Phillips-Schmidt-Shin & Prueba de Dickey-Fuller 📈
Este algoritmo realiza dos pruebas estadísticas sobre la diferencia de precios (spread) entre dos instrumentos seleccionados: el primero en el gráfico actual y el segundo determinado en la configuración. El objetivo es determinar si su relación es estacionaria. Luego utiliza esta información para generar señales visuales basadas en cuánto se desvía la relación actual de su promedio histórico.
⚙️ Componentes Clave:
• 🧪 Prueba ADF (Dickey-Fuller Aumentada): Verifica si el spread entre los dos instrumentos es estacionario.
• 🔬 Prueba KPSS (Kwiatkowski-Phillips-Schmidt-Shin): Otra prueba para la estacionariedad, complementando la prueba ADF.
• 📏 Cálculo del Z-Score: Mide cuántas desviaciones estándar se encuentra el spread actual de su media histórica.
• 📊 Umbral Dinámico: Ajusta el umbral de la señal de trading en función de la volatilidad reciente del mercado.
🔍 Qué Significan los Valores:
El indicador muestra varios valores clave en una tabla:
• 📈 Estacionariedad ADF: Muestra "Estacionario" o "No Estacionario" basado en el resultado de la prueba ADF.
• 📉 Estacionariedad KPSS: Muestra "Estacionario" o "No Estacionario" basado en el resultado de la prueba KPSS.
• 📏 Z-Score Actual: El Z-score actual del spread.
• 🔗 Ratio de Cobertura: El coeficiente de relación entre los dos instrumentos.
• 🌐 Estado del Mercado: Describe la condición actual del mercado basado en el Z-score.
📊 Cómo Interpretar el Gráfico:
• El gráfico principal muestra el Z-score del spread a lo largo del tiempo.
• Las líneas verdes y rojas representan los umbrales superior e inferior para las señales de trading.
• El área entre el Z-score y los umbrales se llena cuando una señal de trading está activa.
• Los gráficos adicionales muestran las estadísticas de las pruebas ADF y KPSS y sus valores críticos.
📉 Ejemplo Práctico: NVIDIA Corporation (NVDA)
Observando el gráfico para NVIDIA Corporation (NVDA), podemos ver cómo se aplica el indicador en un caso real:
Gráfico Principal (Superior): • Muestra el precio histórico de NVIDIA en escala semanal. • Se observa una tendencia alcista general con períodos de consolidación.
Indicador KPSS & ADF (Inferior): • El gráfico inferior muestra el indicador Modelo KPSS & ADF aplicado a NVIDIA. • La línea verde representa el Z-score del spread. • Las áreas sombreadas en verde indican períodos donde el Z-score superó los umbrales, generando señales de trading.
📋 Valores Actuales en la Tabla: • Estacionariedad ADF: No Estacionario • Estacionariedad KPSS: No Estacionario • Z-Score Actual: 3.45 • Ratio de Cobertura: -164.8557 • Estado del Mercado: Volatilidad Moderada
🔍 Interpretación: • Un Z-score de 3.45 sugiere que el precio de NVIDIA está significativamente por encima de su promedio histórico en relación con EURUSD. • Tanto la prueba ADF como la KPSS indican no estacionariedad, lo que sugiere precaución al usar señales de reversión a la media en este momento. • El estado del mercado "Volatilidad Moderada" indica una desviación notable, pero no extrema.
💡 Uso:
• Cuando Ambas Pruebas Muestran Estacionariedad:
• 🔼 Si Z-score > Umbral Superior: Considera comprar el primer instrumento y vender el segundo.
• 🔽 Si Z-score < Umbral Inferior: Considera vender el primer instrumento y comprar el segundo.
• Cuando Alguna Prueba Muestra No Estacionariedad:
• Espera a que la relación se vuelva estacionaria antes de operar.
• Estado del Mercado:
• Usa esta información para evaluar las condiciones generales del mercado y ajustar tu estrategia de trading en consecuencia.
Comparativo en Espejo del Mismo Como Símbolo 2 🔄📊
📊 Valores de la Tabla:
• Umbral de Volatilidad Extrema: Este valor se muestra cuando el Z-score supera el 100%, indicando desviación extrema. Señala una posible oportunidad de trading, ya que el spread entre los activos ha alcanzado niveles inusualmente altos o bajos, lo que podría indicar una reversión o corrección en el mercado.
• Umbral de Reversión a la Media: Aparece cuando el Z-score comienza a volver hacia la media tras un período de alta o extrema volatilidad. Indica que el spread entre los activos está regresando a niveles normales, sugiriendo una fase de estabilización.
• Zona Neutral: Se muestra cuando el Z-score está cerca de cero, señalando que el spread entre activos está dentro de lo esperado. Esto indica un mercado equilibrado con ninguna volatilidad significativa ni oportunidades claras de trading.
• Umbral de Baja Volatilidad: Aparece cuando el Z-score está por debajo del 70% del umbral dinámico, reflejando un período de baja volatilidad y estabilidad del mercado, indicando menos oportunidades de trading.
JordanSwindenLibraryLibrary "JordanSwindenLibrary"
TODO: add library description here
getDecimals()
Calculates how many decimals are on the quote price of the current market
Returns: The current decimal places on the market quote price
getPipSize(multiplier)
Calculates the pip size of the current market
Parameters:
multiplier (int) : The mintick point multiplier (1 by default, 10 for FX/Crypto/CFD but can be used to override when certain markets require)
Returns: The pip size for the current market
truncate(number, decimalPlaces)
Truncates (cuts) excess decimal places
Parameters:
number (float) : The number to truncate
decimalPlaces (simple float) : (default=2) The number of decimal places to truncate to
Returns: The given number truncated to the given decimalPlaces
toWhole(number)
Converts pips into whole numbers
Parameters:
number (float) : The pip number to convert into a whole number
Returns: The converted number
toPips(number)
Converts whole numbers back into pips
Parameters:
number (float) : The whole number to convert into pips
Returns: The converted number
getPctChange(value1, value2, lookback)
Gets the percentage change between 2 float values over a given lookback period
Parameters:
value1 (float) : The first value to reference
value2 (float) : The second value to reference
lookback (int) : The lookback period to analyze
Returns: The percent change over the two values and lookback period
random(minRange, maxRange)
Wichmann–Hill Pseudo-Random Number Generator
Parameters:
minRange (float) : The smallest possible number (default: 0)
maxRange (float) : The largest possible number (default: 1)
Returns: A random number between minRange and maxRange
bullFib(priceLow, priceHigh, fibRatio)
Calculates a bullish fibonacci value
Parameters:
priceLow (float) : The lowest price point
priceHigh (float) : The highest price point
fibRatio (float) : The fibonacci % ratio to calculate
Returns: The fibonacci value of the given ratio between the two price points
bearFib(priceLow, priceHigh, fibRatio)
Calculates a bearish fibonacci value
Parameters:
priceLow (float) : The lowest price point
priceHigh (float) : The highest price point
fibRatio (float) : The fibonacci % ratio to calculate
Returns: The fibonacci value of the given ratio between the two price points
getMA(length, maType)
Gets a Moving Average based on type (! MUST BE CALLED ON EVERY TICK TO BE ACCURATE, don't place in scopes)
Parameters:
length (simple int) : The MA period
maType (string) : The type of MA
Returns: A moving average with the given parameters
barsAboveMA(lookback, ma)
Counts how many candles are above the MA
Parameters:
lookback (int) : The lookback period to look back over
ma (float) : The moving average to check
Returns: The bar count of how many recent bars are above the MA
barsBelowMA(lookback, ma)
Counts how many candles are below the MA
Parameters:
lookback (int) : The lookback period to look back over
ma (float) : The moving average to reference
Returns: The bar count of how many recent bars are below the EMA
barsCrossedMA(lookback, ma)
Counts how many times the EMA was crossed recently (based on closing prices)
Parameters:
lookback (int) : The lookback period to look back over
ma (float) : The moving average to reference
Returns: The bar count of how many times price recently crossed the EMA (based on closing prices)
getPullbackBarCount(lookback, direction)
Counts how many green & red bars have printed recently (ie. pullback count)
Parameters:
lookback (int) : The lookback period to look back over
direction (int) : The color of the bar to count (1 = Green, -1 = Red)
Returns: The bar count of how many candles have retraced over the given lookback & direction
getBodySize()
Gets the current candle's body size (in POINTS, divide by 10 to get pips)
Returns: The current candle's body size in POINTS
getTopWickSize()
Gets the current candle's top wick size (in POINTS, divide by 10 to get pips)
Returns: The current candle's top wick size in POINTS
getBottomWickSize()
Gets the current candle's bottom wick size (in POINTS, divide by 10 to get pips)
Returns: The current candle's bottom wick size in POINTS
getBodyPercent()
Gets the current candle's body size as a percentage of its entire size including its wicks
Returns: The current candle's body size percentage
isHammer(fib, colorMatch)
Checks if the current bar is a hammer candle based on the given parameters
Parameters:
fib (float) : (default=0.382) The fib to base candle body on
colorMatch (bool) : (default=false) Does the candle need to be green? (true/false)
Returns: A boolean - true if the current bar matches the requirements of a hammer candle
isStar(fib, colorMatch)
Checks if the current bar is a shooting star candle based on the given parameters
Parameters:
fib (float) : (default=0.382) The fib to base candle body on
colorMatch (bool) : (default=false) Does the candle need to be red? (true/false)
Returns: A boolean - true if the current bar matches the requirements of a shooting star candle
isDoji(wickSize, bodySize)
Checks if the current bar is a doji candle based on the given parameters
Parameters:
wickSize (float) : (default=2) The maximum top wick size compared to the bottom (and vice versa)
bodySize (float) : (default=0.05) The maximum body size as a percentage compared to the entire candle size
Returns: A boolean - true if the current bar matches the requirements of a doji candle
isBullishEC(allowance, rejectionWickSize, engulfWick)
Checks if the current bar is a bullish engulfing candle
Parameters:
allowance (float) : (default=0) How many POINTS to allow the open to be off by (useful for markets with micro gaps)
rejectionWickSize (float) : (default=disabled) The maximum rejection wick size compared to the body as a percentage
engulfWick (bool) : (default=false) Does the engulfing candle require the wick to be engulfed as well?
Returns: A boolean - true if the current bar matches the requirements of a bullish engulfing candle
isBearishEC(allowance, rejectionWickSize, engulfWick)
Checks if the current bar is a bearish engulfing candle
Parameters:
allowance (float) : (default=0) How many POINTS to allow the open to be off by (useful for markets with micro gaps)
rejectionWickSize (float) : (default=disabled) The maximum rejection wick size compared to the body as a percentage
engulfWick (bool) : (default=false) Does the engulfing candle require the wick to be engulfed as well?
Returns: A boolean - true if the current bar matches the requirements of a bearish engulfing candle
isInsideBar()
Detects inside bars
Returns: Returns true if the current bar is an inside bar
isOutsideBar()
Detects outside bars
Returns: Returns true if the current bar is an outside bar
barInSession(sess, useFilter)
Determines if the current price bar falls inside the specified session
Parameters:
sess (simple string) : The session to check
useFilter (bool) : (default=true) Whether or not to actually use this filter
Returns: A boolean - true if the current bar falls within the given time session
barOutSession(sess, useFilter)
Determines if the current price bar falls outside the specified session
Parameters:
sess (simple string) : The session to check
useFilter (bool) : (default=true) Whether or not to actually use this filter
Returns: A boolean - true if the current bar falls outside the given time session
dateFilter(startTime, endTime)
Determines if this bar's time falls within date filter range
Parameters:
startTime (int) : The UNIX date timestamp to begin searching from
endTime (int) : the UNIX date timestamp to stop searching from
Returns: A boolean - true if the current bar falls within the given dates
dayFilter(monday, tuesday, wednesday, thursday, friday, saturday, sunday)
Checks if the current bar's day is in the list of given days to analyze
Parameters:
monday (bool) : Should the script analyze this day? (true/false)
tuesday (bool) : Should the script analyze this day? (true/false)
wednesday (bool) : Should the script analyze this day? (true/false)
thursday (bool) : Should the script analyze this day? (true/false)
friday (bool) : Should the script analyze this day? (true/false)
saturday (bool) : Should the script analyze this day? (true/false)
sunday (bool) : Should the script analyze this day? (true/false)
Returns: A boolean - true if the current bar's day is one of the given days
atrFilter(atrValue, maxSize)
Parameters:
atrValue (float)
maxSize (float)
tradeCount()
Calculate total trade count
Returns: Total closed trade count
isLong()
Check if we're currently in a long trade
Returns: True if our position size is positive
isShort()
Check if we're currently in a short trade
Returns: True if our position size is negative
isFlat()
Check if we're currentlyflat
Returns: True if our position size is zero
wonTrade()
Check if this bar falls after a winning trade
Returns: True if we just won a trade
lostTrade()
Check if this bar falls after a losing trade
Returns: True if we just lost a trade
maxDrawdownRealized()
Gets the max drawdown based on closed trades (ie. realized P&L). The strategy tester displays max drawdown as open P&L (unrealized).
Returns: The max drawdown based on closed trades (ie. realized P&L). The strategy tester displays max drawdown as open P&L (unrealized).
totalPipReturn()
Gets the total amount of pips won/lost (as a whole number)
Returns: Total amount of pips won/lost (as a whole number)
longWinCount()
Count how many winning long trades we've had
Returns: Long win count
shortWinCount()
Count how many winning short trades we've had
Returns: Short win count
longLossCount()
Count how many losing long trades we've had
Returns: Long loss count
shortLossCount()
Count how many losing short trades we've had
Returns: Short loss count
breakEvenCount(allowanceTicks)
Count how many break-even trades we've had
Parameters:
allowanceTicks (float) : Optional - how many ticks to allow between entry & exit price (default 0)
Returns: Break-even count
longCount()
Count how many long trades we've taken
Returns: Long trade count
shortCount()
Count how many short trades we've taken
Returns: Short trade count
longWinPercent()
Calculate win rate of long trades
Returns: Long win rate (0-100)
shortWinPercent()
Calculate win rate of short trades
Returns: Short win rate (0-100)
breakEvenPercent(allowanceTicks)
Calculate break even rate of all trades
Parameters:
allowanceTicks (float) : Optional - how many ticks to allow between entry & exit price (default 0)
Returns: Break-even win rate (0-100)
averageRR()
Calculate average risk:reward
Returns: Average winning trade divided by average losing trade
unitsToLots(units)
(Forex) Convert the given unit count to lots (multiples of 100,000)
Parameters:
units (float) : The units to convert into lots
Returns: Units converted to nearest lot size (as float)
getFxPositionSize(balance, risk, stopLossPips, fxRate, lots)
(Forex) Calculate fixed-fractional position size based on given parameters
Parameters:
balance (float) : The account balance
risk (float) : The % risk (whole number)
stopLossPips (float) : Pip distance to base risk on
fxRate (float) : The conversion currency rate (more info below in library documentation)
lots (bool) : Whether or not to return the position size in lots rather than units (true by default)
Returns: Units/lots to enter into "qty=" parameter of strategy entry function
EXAMPLE USAGE:
string conversionCurrencyPair = (strategy.account_currency == syminfo.currency ? syminfo.tickerid : strategy.account_currency + syminfo.currency)
float fx_rate = request.security(conversionCurrencyPair, timeframe.period, close )
if (longCondition)
strategy.entry("Long", strategy.long, qty=zen.getFxPositionSize(strategy.equity, 1, stopLossPipsWholeNumber, fx_rate, true))
skipTradeMonteCarlo(chance, debug)
Checks to see if trade should be skipped to emulate rudimentary Monte Carlo simulation
Parameters:
chance (float) : The chance to skip a trade (0-1 or 0-100, function will normalize to 0-1)
debug (bool) : Whether or not to display a label informing of the trade skip
Returns: True if the trade is skipped, false if it's not skipped (idea being to include this function in entry condition validation checks)
fillCell(tableID, column, row, title, value, bgcolor, txtcolor, tooltip)
This updates the given table's cell with the given values
Parameters:
tableID (table) : The table ID to update
column (int) : The column to update
row (int) : The row to update
title (string) : The title of this cell
value (string) : The value of this cell
bgcolor (color) : The background color of this cell
txtcolor (color) : The text color of this cell
tooltip (string)
Returns: Nothing.
ChartUtilsLibrary "ChartUtils"
Library for chart utilities, including managing tables
initTable(rows, cols, bgcolor)
Initializes a table with specific dimensions and color
Parameters:
rows (int) : (int) Number of rows in the table
cols (int) : (int) Number of columns in the table
bgcolor (color) : (color) Background color of the table
Returns: (table) The initialized table
updateTable(tbl, is_price_below_avg, current_investment_USD, strategy_position_size, strategy_position_avg_price, strategy_openprofit, strategy_opentrades, isBullishRate, isBearishRate, mlRSIOverSold, mlRSIOverBought)
Updates the trading table
Parameters:
tbl (table) : (table) The table to update
is_price_below_avg (bool) : (bool) If the current price is below the average price
current_investment_USD (float) : (float) The current investment in USD
strategy_position_size (float) : (float) The size of the current position
strategy_position_avg_price (float) : (float) The average price of the current position
strategy_openprofit (float) : (float) The current open profit
strategy_opentrades (int) : (int) The number of open trades
isBullishRate (bool) : (bool) If the current rate is bullish
isBearishRate (bool) : (bool) If the current rate is bearish
mlRSIOverSold (bool) : (bool) If the ML RSI is oversold
mlRSIOverBought (bool) : (bool) If the ML RSI is overbought
updateTableNoPosition(tbl)
Updates the table when there is no position
Parameters:
tbl (table) : (table) The table to update
Index Generator [By MUQWISHI]▋ INTRODUCTION :
The “Index Generator” simplifies the process of building a custom market index, allowing investors to enter a list of preferred holdings from global securities. It aims to serve as an approach for tracking performance, conducting research, and analyzing specific aspects of the global market. The output will include an index value, a table of holdings, and chart plotting, providing a deeper understanding of historical movement.
_______________________
▋ OVERVIEW:
The image can be taken as an example of building a custom index. I created this index and named it “My Oil & Gas Index”. The index comprises several global energy companies. Essentially, the indicator weights each company by collecting the number of shares and then computes the market capitalization before sorting them as seen in the table.
_______________________
▋ OUTPUTS:
The output can be divided into 3 sections:
1. Index Title (Name & Value).
2. Index Holdings.
3. Index Chart.
1. Index Title , displays the index name at the top, and at the bottom, it shows the index value, along with the daily change in points and percentage.
2. Index Holdings , displays list the holding securities inside a table that contains the ticker, price, daily change %, market cap, and weight %. Additionally, a tooltip appears when the user passes the cursor over a ticker's cell, showing brief information about the company, such as the company's name, exchange market, country, sector, and industry.
3. Index Chart , display a plot of the historical movement of the index in the form of a bar, candle, or line chart.
_______________________
▋ INDICATOR SETTINGS:
(1) Naming the index.
(2) Entering a currency. To unite all securities in one currency.
(3) Table location on the chart.
(4) Table’s cells size.
(5) Table’s colors.
(6) Sorting table. By securities’ (Market Cap, Change%, Price, or Ticker Alphabetical) order.
(7) Plotting formation (Candle, Bar, or Line)
(8) To show/hide any indicator’s components.
(9) There are 34 fields where user can fill them with symbols.
Please let me know if you have any questions.
arraysLibrary "arraymethods"
Supplementary array methods.
delete(arr, index)
remove int object from array of integers at specific index
Parameters:
arr : int array
index : index at which int object need to be removed
Returns: void
delete(arr, index)
remove float object from array of float at specific index
Parameters:
arr : float array
index : index at which float object need to be removed
Returns: float
delete(arr, index)
remove bool object from array of bool at specific index
Parameters:
arr : bool array
index : index at which bool object need to be removed
Returns: bool
delete(arr, index)
remove string object from array of string at specific index
Parameters:
arr : string array
index : index at which string object need to be removed
Returns: string
delete(arr, index)
remove color object from array of color at specific index
Parameters:
arr : color array
index : index at which color object need to be removed
Returns: color
delete(arr, index)
remove line object from array of lines at specific index and deletes the line
Parameters:
arr : line array
index : index at which line object need to be removed and deleted
Returns: void
delete(arr, index)
remove label object from array of labels at specific index and deletes the label
Parameters:
arr : label array
index : index at which label object need to be removed and deleted
Returns: void
delete(arr, index)
remove box object from array of boxes at specific index and deletes the box
Parameters:
arr : box array
index : index at which box object need to be removed and deleted
Returns: void
delete(arr, index)
remove table object from array of tables at specific index and deletes the table
Parameters:
arr : table array
index : index at which table object need to be removed and deleted
Returns: void
delete(arr, index)
remove linefill object from array of linefills at specific index and deletes the linefill
Parameters:
arr : linefill array
index : index at which linefill object need to be removed and deleted
Returns: void
popr(arr)
remove last int object from array
Parameters:
arr : int array
Returns: int
popr(arr)
remove last float object from array
Parameters:
arr : float array
Returns: float
popr(arr)
remove last bool object from array
Parameters:
arr : bool array
Returns: bool
popr(arr)
remove last string object from array
Parameters:
arr : string array
Returns: string
popr(arr)
remove last color object from array
Parameters:
arr : color array
Returns: color
popr(arr)
remove and delete last line object from array
Parameters:
arr : line array
Returns: void
popr(arr)
remove and delete last label object from array
Parameters:
arr : label array
Returns: void
popr(arr)
remove and delete last box object from array
Parameters:
arr : box array
Returns: void
popr(arr)
remove and delete last table object from array
Parameters:
arr : table array
Returns: void
popr(arr)
remove and delete last linefill object from array
Parameters:
arr : linefill array
Returns: void
shiftr(arr)
remove first int object from array
Parameters:
arr : int array
Returns: int
shiftr(arr)
remove first float object from array
Parameters:
arr : float array
Returns: float
shiftr(arr)
remove first bool object from array
Parameters:
arr : bool array
Returns: bool
shiftr(arr)
remove first string object from array
Parameters:
arr : string array
Returns: string
shiftr(arr)
remove first color object from array
Parameters:
arr : color array
Returns: color
shiftr(arr)
remove and delete first line object from array
Parameters:
arr : line array
Returns: void
shiftr(arr)
remove and delete first label object from array
Parameters:
arr : label array
Returns: void
shiftr(arr)
remove and delete first box object from array
Parameters:
arr : box array
Returns: void
shiftr(arr)
remove and delete first table object from array
Parameters:
arr : table array
Returns: void
shiftr(arr)
remove and delete first linefill object from array
Parameters:
arr : linefill array
Returns: void
push(arr, val, maxItems)
add int to the end of an array with max items cap. Objects are removed from start to maintain max items cap
Parameters:
arr : int array
val : int object to be pushed
maxItems : max number of items array can hold
Returns: int
push(arr, val, maxItems)
add float to the end of an array with max items cap. Objects are removed from start to maintain max items cap
Parameters:
arr : float array
val : float object to be pushed
maxItems : max number of items array can hold
Returns: float
push(arr, val, maxItems)
add bool to the end of an array with max items cap. Objects are removed from start to maintain max items cap
Parameters:
arr : bool array
val : bool object to be pushed
maxItems : max number of items array can hold
Returns: bool
push(arr, val, maxItems)
add string to the end of an array with max items cap. Objects are removed from start to maintain max items cap
Parameters:
arr : string array
val : string object to be pushed
maxItems : max number of items array can hold
Returns: string
push(arr, val, maxItems)
add color to the end of an array with max items cap. Objects are removed from start to maintain max items cap
Parameters:
arr : color array
val : color object to be pushed
maxItems : max number of items array can hold
Returns: color
push(arr, val, maxItems)
add line to the end of an array with max items cap. Objects are removed and deleted from start to maintain max items cap
Parameters:
arr : line array
val : line object to be pushed
maxItems : max number of items array can hold
Returns: line
push(arr, val, maxItems)
add label to the end of an array with max items cap. Objects are removed and deleted from start to maintain max items cap
Parameters:
arr : label array
val : label object to be pushed
maxItems : max number of items array can hold
Returns: label
push(arr, val, maxItems)
add box to the end of an array with max items cap. Objects are removed and deleted from start to maintain max items cap
Parameters:
arr : box array
val : box object to be pushed
maxItems : max number of items array can hold
Returns: box
push(arr, val, maxItems)
add table to the end of an array with max items cap. Objects are removed and deleted from start to maintain max items cap
Parameters:
arr : table array
val : table object to be pushed
maxItems : max number of items array can hold
Returns: table
push(arr, val, maxItems)
add linefill to the end of an array with max items cap. Objects are removed and deleted from start to maintain max items cap
Parameters:
arr : linefill array
val : linefill object to be pushed
maxItems : max number of items array can hold
Returns: linefill
unshift(arr, val, maxItems)
add int to the beginning of an array with max items cap. Objects are removed from end to maintain max items cap
Parameters:
arr : int array
val : int object to be unshift
maxItems : max number of items array can hold
Returns: int
unshift(arr, val, maxItems)
add float to the beginning of an array with max items cap. Objects are removed from end to maintain max items cap
Parameters:
arr : float array
val : float object to be unshift
maxItems : max number of items array can hold
Returns: float
unshift(arr, val, maxItems)
add bool to the beginning of an array with max items cap. Objects are removed from end to maintain max items cap
Parameters:
arr : bool array
val : bool object to be unshift
maxItems : max number of items array can hold
Returns: bool
unshift(arr, val, maxItems)
add string to the beginning of an array with max items cap. Objects are removed from end to maintain max items cap
Parameters:
arr : string array
val : string object to be unshift
maxItems : max number of items array can hold
Returns: string
unshift(arr, val, maxItems)
add color to the beginning of an array with max items cap. Objects are removed from end to maintain max items cap
Parameters:
arr : color array
val : color object to be unshift
maxItems : max number of items array can hold
Returns: color
unshift(arr, val, maxItems)
add line to the beginning of an array with max items cap. Objects are removed and deleted from end to maintain max items cap
Parameters:
arr : line array
val : line object to be unshift
maxItems : max number of items array can hold
Returns: line
unshift(arr, val, maxItems)
add label to the beginning of an array with max items cap. Objects are removed and deleted from end to maintain max items cap
Parameters:
arr : label array
val : label object to be unshift
maxItems : max number of items array can hold
Returns: label
unshift(arr, val, maxItems)
add box to the beginning of an array with max items cap. Objects are removed and deleted from end to maintain max items cap
Parameters:
arr : box array
val : box object to be unshift
maxItems : max number of items array can hold
Returns: box
unshift(arr, val, maxItems)
add table to the beginning of an array with max items cap. Objects are removed and deleted from end to maintain max items cap
Parameters:
arr : table array
val : table object to be unshift
maxItems : max number of items array can hold
Returns: table
unshift(arr, val, maxItems)
add linefill to the beginning of an array with max items cap. Objects are removed and deleted from end to maintain max items cap
Parameters:
arr : linefill array
val : linefill object to be unshift
maxItems : max number of items array can hold
Returns: linefill
flush(arr)
remove all int objects in an array
Parameters:
arr : int array
Returns: int
flush(arr)
remove all float objects in an array
Parameters:
arr : float array
Returns: float
flush(arr)
remove all bool objects in an array
Parameters:
arr : bool array
Returns: bool
flush(arr)
remove all string objects in an array
Parameters:
arr : string array
Returns: string
flush(arr)
remove all color objects in an array
Parameters:
arr : color array
Returns: color
flush(arr)
remove and delete all line objects in an array
Parameters:
arr : line array
Returns: line
flush(arr)
remove and delete all label objects in an array
Parameters:
arr : label array
Returns: label
flush(arr)
remove and delete all box objects in an array
Parameters:
arr : box array
Returns: box
flush(arr)
remove and delete all table objects in an array
Parameters:
arr : table array
Returns: table
flush(arr)
remove and delete all linefill objects in an array
Parameters:
arr : linefill array
Returns: linefill
Price Legs: Average Heights; 'Smart ATR'Price Legs: Average Heights; 'Smart ATR'. Consol Range Gauge
~~ Indicator to show small and large price legs (based on short and long input pivot lengths), and calculating the average heights of these price legs; counting legs from user-input start time ~~
//Premise: Wanted to use this as something like a 'Smart ATR': where the average/typical range of a distinct & dynamic price leg could be calculated based on a user-input time interval (as opposed to standard ATR, which is simply the average range over a consistent repeating period, with no regard to market structure). My instinct is that this would be most useful for consolidated periods & range trading: giving the trader an idea of what the typical size of a price leg might be in the current market state (hence in the title, Consol Range gauge)
//Features & User inputs:
-Start time: confirm input when loading indicator by clicking on the chart. Then drag the vertical line to change start time easily.
-Large Legs (toggle on/off) and user-input pivot lookback/lookforward length (larger => larger legs)
-Small Legs (toggle on/off) and user-input pivot lookback/lookforward length (smaller => smaller legs)
-Display Stats table: toggle on/off: simple view- shows the averages of large (up & down), small (up & down), and combined (for each).
-Extended stats table: toggle on/off option to show the averages of the last 3 legs of each category (up/down/large/small/combined)
-Toggle on/off Time & Price chart text labels of price legs (time in mins/hours/days; price in $ or pips; auto assigned based on asset)
-Table position: user choice.
//Notes & tips:
-Using custom start time along with replay mode, you can select any arbitrary chunk of price for the purpose of backtesting.
-Play around with the pivot lookback lengths to find price legs most suitable to the current market regime (consolidating/trending; high volatility/ low volatility)
-Single bar price legs will never be counted: they must be at least 2 bars from H>>L or L>>H.
//Credits: Thanks to @crypto_juju for the idea of applying statistics to this simple price leg indicator.
Simple View: showing only the full averages (counting from Start time):
View showing ONLY the large legs, with Time & Price labels toggled ON:
arraymethodsLibrary "arraymethods"
Supplementary array methods.
delete(arr, index)
remove int object from array of integers at specific index
Parameters:
arr : int array
index : index at which int object need to be removed
Returns: void
delete(arr, index)
remove float object from array of float at specific index
Parameters:
arr : float array
index : index at which float object need to be removed
Returns: float
delete(arr, index)
remove bool object from array of bool at specific index
Parameters:
arr : bool array
index : index at which bool object need to be removed
Returns: bool
delete(arr, index)
remove string object from array of string at specific index
Parameters:
arr : string array
index : index at which string object need to be removed
Returns: string
delete(arr, index)
remove color object from array of color at specific index
Parameters:
arr : color array
index : index at which color object need to be removed
Returns: color
delete(arr, index)
remove line object from array of lines at specific index and deletes the line
Parameters:
arr : line array
index : index at which line object need to be removed and deleted
Returns: void
delete(arr, index)
remove label object from array of labels at specific index and deletes the label
Parameters:
arr : label array
index : index at which label object need to be removed and deleted
Returns: void
delete(arr, index)
remove box object from array of boxes at specific index and deletes the box
Parameters:
arr : box array
index : index at which box object need to be removed and deleted
Returns: void
delete(arr, index)
remove table object from array of tables at specific index and deletes the table
Parameters:
arr : table array
index : index at which table object need to be removed and deleted
Returns: void
delete(arr, index)
remove linefill object from array of linefills at specific index and deletes the linefill
Parameters:
arr : linefill array
index : index at which linefill object need to be removed and deleted
Returns: void
popr(arr)
remove last int object from array
Parameters:
arr : int array
Returns: int
popr(arr)
remove last float object from array
Parameters:
arr : float array
Returns: float
popr(arr)
remove last bool object from array
Parameters:
arr : bool array
Returns: bool
popr(arr)
remove last string object from array
Parameters:
arr : string array
Returns: string
popr(arr)
remove last color object from array
Parameters:
arr : color array
Returns: color
popr(arr)
remove and delete last line object from array
Parameters:
arr : line array
Returns: void
popr(arr)
remove and delete last label object from array
Parameters:
arr : label array
Returns: void
popr(arr)
remove and delete last box object from array
Parameters:
arr : box array
Returns: void
popr(arr)
remove and delete last table object from array
Parameters:
arr : table array
Returns: void
popr(arr)
remove and delete last linefill object from array
Parameters:
arr : linefill array
Returns: void
shiftr(arr)
remove first int object from array
Parameters:
arr : int array
Returns: int
shiftr(arr)
remove first float object from array
Parameters:
arr : float array
Returns: float
shiftr(arr)
remove first bool object from array
Parameters:
arr : bool array
Returns: bool
shiftr(arr)
remove first string object from array
Parameters:
arr : string array
Returns: string
shiftr(arr)
remove first color object from array
Parameters:
arr : color array
Returns: color
shiftr(arr)
remove and delete first line object from array
Parameters:
arr : line array
Returns: void
shiftr(arr)
remove and delete first label object from array
Parameters:
arr : label array
Returns: void
shiftr(arr)
remove and delete first box object from array
Parameters:
arr : box array
Returns: void
shiftr(arr)
remove and delete first table object from array
Parameters:
arr : table array
Returns: void
shiftr(arr)
remove and delete first linefill object from array
Parameters:
arr : linefill array
Returns: void
push(arr, val, maxItems)
add int to the end of an array with max items cap. Objects are removed from start to maintain max items cap
Parameters:
arr : int array
val : int object to be pushed
maxItems : max number of items array can hold
Returns: int
push(arr, val, maxItems)
add float to the end of an array with max items cap. Objects are removed from start to maintain max items cap
Parameters:
arr : float array
val : float object to be pushed
maxItems : max number of items array can hold
Returns: float
push(arr, val, maxItems)
add bool to the end of an array with max items cap. Objects are removed from start to maintain max items cap
Parameters:
arr : bool array
val : bool object to be pushed
maxItems : max number of items array can hold
Returns: bool
push(arr, val, maxItems)
add string to the end of an array with max items cap. Objects are removed from start to maintain max items cap
Parameters:
arr : string array
val : string object to be pushed
maxItems : max number of items array can hold
Returns: string
push(arr, val, maxItems)
add color to the end of an array with max items cap. Objects are removed from start to maintain max items cap
Parameters:
arr : color array
val : color object to be pushed
maxItems : max number of items array can hold
Returns: color
push(arr, val, maxItems)
add line to the end of an array with max items cap. Objects are removed and deleted from start to maintain max items cap
Parameters:
arr : line array
val : line object to be pushed
maxItems : max number of items array can hold
Returns: line
push(arr, val, maxItems)
add label to the end of an array with max items cap. Objects are removed and deleted from start to maintain max items cap
Parameters:
arr : label array
val : label object to be pushed
maxItems : max number of items array can hold
Returns: label
push(arr, val, maxItems)
add box to the end of an array with max items cap. Objects are removed and deleted from start to maintain max items cap
Parameters:
arr : box array
val : box object to be pushed
maxItems : max number of items array can hold
Returns: box
push(arr, val, maxItems)
add table to the end of an array with max items cap. Objects are removed and deleted from start to maintain max items cap
Parameters:
arr : table array
val : table object to be pushed
maxItems : max number of items array can hold
Returns: table
push(arr, val, maxItems)
add linefill to the end of an array with max items cap. Objects are removed and deleted from start to maintain max items cap
Parameters:
arr : linefill array
val : linefill object to be pushed
maxItems : max number of items array can hold
Returns: linefill
unshift(arr, val, maxItems)
add int to the beginning of an array with max items cap. Objects are removed from end to maintain max items cap
Parameters:
arr : int array
val : int object to be unshift
maxItems : max number of items array can hold
Returns: int
unshift(arr, val, maxItems)
add float to the beginning of an array with max items cap. Objects are removed from end to maintain max items cap
Parameters:
arr : float array
val : float object to be unshift
maxItems : max number of items array can hold
Returns: float
unshift(arr, val, maxItems)
add bool to the beginning of an array with max items cap. Objects are removed from end to maintain max items cap
Parameters:
arr : bool array
val : bool object to be unshift
maxItems : max number of items array can hold
Returns: bool
unshift(arr, val, maxItems)
add string to the beginning of an array with max items cap. Objects are removed from end to maintain max items cap
Parameters:
arr : string array
val : string object to be unshift
maxItems : max number of items array can hold
Returns: string
unshift(arr, val, maxItems)
add color to the beginning of an array with max items cap. Objects are removed from end to maintain max items cap
Parameters:
arr : color array
val : color object to be unshift
maxItems : max number of items array can hold
Returns: color
unshift(arr, val, maxItems)
add line to the beginning of an array with max items cap. Objects are removed and deleted from end to maintain max items cap
Parameters:
arr : line array
val : line object to be unshift
maxItems : max number of items array can hold
Returns: line
unshift(arr, val, maxItems)
add label to the beginning of an array with max items cap. Objects are removed and deleted from end to maintain max items cap
Parameters:
arr : label array
val : label object to be unshift
maxItems : max number of items array can hold
Returns: label
unshift(arr, val, maxItems)
add box to the beginning of an array with max items cap. Objects are removed and deleted from end to maintain max items cap
Parameters:
arr : box array
val : box object to be unshift
maxItems : max number of items array can hold
Returns: box
unshift(arr, val, maxItems)
add table to the beginning of an array with max items cap. Objects are removed and deleted from end to maintain max items cap
Parameters:
arr : table array
val : table object to be unshift
maxItems : max number of items array can hold
Returns: table
unshift(arr, val, maxItems)
add linefill to the beginning of an array with max items cap. Objects are removed and deleted from end to maintain max items cap
Parameters:
arr : linefill array
val : linefill object to be unshift
maxItems : max number of items array can hold
Returns: linefill
flush(arr)
remove all int objects in an array
Parameters:
arr : int array
Returns: int
flush(arr)
remove all float objects in an array
Parameters:
arr : float array
Returns: float
flush(arr)
remove all bool objects in an array
Parameters:
arr : bool array
Returns: bool
flush(arr)
remove all string objects in an array
Parameters:
arr : string array
Returns: string
flush(arr)
remove all color objects in an array
Parameters:
arr : color array
Returns: color
flush(arr)
remove and delete all line objects in an array
Parameters:
arr : line array
Returns: line
flush(arr)
remove and delete all label objects in an array
Parameters:
arr : label array
Returns: label
flush(arr)
remove and delete all box objects in an array
Parameters:
arr : box array
Returns: box
flush(arr)
remove and delete all table objects in an array
Parameters:
arr : table array
Returns: table
flush(arr)
remove and delete all linefill objects in an array
Parameters:
arr : linefill array
Returns: linefill
%ATR + ΔClose HighlightScript Overview
This indicator displays on your chart:
Table of the last N bars that passed the ATR-based range filter:
Columns: Bar #, High, Range (High–Low), Low
Summary row: ATR(N), suggested Stop-Loss (SL = X % of ATR), and the current bar’s range as a percentage of ATR
Red badge on the most recent bar showing ΔClose% (the absolute difference between today’s and yesterday’s close, expressed as % of ATR)
Background highlights:
Blue fill under the most recent bar that met the filter
Yellow fill under bars that failed the filter
Hidden plots of ATR, %ATR, and ΔClose% (for use in strategies or alerts)
All table elements, fills, and plots can be toggled off with a single switch so that only the red ΔClose% badge remains visible.
Inputs
Setting Description Default
Length (bars) Lookback period for ATR and range filter (bars) 5
Upper deviation (%) Upper filter threshold (% of average ATR) 150%
Lower deviation (%) Lower filter threshold (% of average ATR) 50%
SL as % of ATR Stop-loss distance (% of ATR) 10%
Label position Table position relative to bar (“above” or “below”) above
Vertical offset (×ATR) Vertical spacing from the bar in ATR units 2.0
Show table & ATR plots Show or hide table, background highlights, and plots true
How It Works
ATR Calculation & Filtering
Computes average True Range over the last N bars.
Marks bars whose daily range falls within the specified upper/lower deviation band.
Table Construction
Gathers up to N most recent bars that passed the filter (or backfills from the most recent pass).
Formats each bar’s High, Low, and Range into fixed-width columns for neat alignment.
Stop-Loss & Percent Metrics
Calculates a recommended SL distance as a percentage of ATR.
Computes today’s bar range and ΔClose (absolute change in close) as % of ATR.
Chart Display
Table: Shows detailed per-bar data and summary metrics.
Background fills: Blue for the latest valid bar, yellow for invalid bars.
Hidden plots: ATR, %ATR, and ΔClose% (useful for backtesting).
Red badge: Always visible on the right side of the last bar, displaying ΔClose%.
Tips
Disable the table & ATR plots to reduce chart clutter—leave only the red ΔClose% badge for a minimalist volatility alert.
Use the hidden ATR fields (plot outputs) in TradingView Strategies or Alerts to automate volatility-based entries/exits.
Adjust the deviation band to capture “normal” intraday moves vs. outsized volatility spikes.
Load this script on any US market chart (stocks, futures, crypto, etc.) to instantly visualize recent volatility structure, set dynamic SL levels, and highlight today’s price change relative to average true range.
ADR Tracker Version 2Description
The **ADR Tracker** plots a customizable panel on your chart that monitors the Average Daily Range (ADR) and shows how today’s price action compares to that average. It calculates the daily high–low range for each of the past 14 days (can be adjusted) and then takes a simple moving average of those ranges to determine the ADR.
**Features:**
* **Current ADR value:** Shows the 14‑day ADR in price units.
* **ADR status:** Indicates whether today’s range has reached or exceeded the ADR.
* **Ticks remaining:** Calculates how many minimum price ticks remain before the ADR would be met.
* **Real‑time tracking:** Monitors the intraday high and low to update the range continuously.
* **Customizable panel:** Uses TradingView’s table object to display the information. You can set the table’s horizontal and vertical position (top/middle/bottom and left/centre/right) with inputs. The script also lets you change the text and background colours, as well as the width and height of each row. Table cells use explicit width and height percentages, which Pine supports in v6. Each call to `table.cell()` defines the text, colours and dimensions for its cell, so the panel resizes automatically based on your settings.
**Usage:**
Apply the indicator to any chart. For the most accurate real‑time tracking, use it on intraday timeframes (e.g. 5‑min or 1‑hour) so the current day’s range updates as new bars arrive. Adjust the inputs in the settings panel to reposition the list or change its appearance.
---
This description explains what the indicator does and highlights its customizable table display, referencing the Pine Script table features used.
Momentum Regression [BackQuant]Momentum Regression
The Momentum Regression is an advanced statistical indicator built to empower quants, strategists, and technically inclined traders with a robust visual and quantitative framework for analyzing momentum effects in financial markets. Unlike traditional momentum indicators that rely on raw price movements or moving averages, this tool leverages a volatility-adjusted linear regression model (y ~ x) to uncover and validate momentum behavior over a user-defined lookback window.
Purpose & Design Philosophy
Momentum is a core anomaly in quantitative finance — an effect where assets that have performed well (or poorly) continue to do so over short to medium-term horizons. However, this effect can be noisy, regime-dependent, and sometimes spurious.
The Momentum Regression is designed as a pre-strategy analytical tool to help you filter and verify whether statistically meaningful and tradable momentum exists in a given asset. Its architecture includes:
Volatility normalization to account for differences in scale and distribution.
Regression analysis to model the relationship between past and present standardized returns.
Deviation bands to highlight overbought/oversold zones around the predicted trendline.
Statistical summary tables to assess the reliability of the detected momentum.
Core Concepts and Calculations
The model uses the following:
Independent variable (x): The volatility-adjusted return over the chosen momentum period.
Dependent variable (y): The 1-bar lagged log return, also adjusted for volatility.
A simple linear regression is performed over a large lookback window (default: 1000 bars), which reveals the slope and intercept of the momentum line. These values are then used to construct:
A predicted momentum trendline across time.
Upper and lower deviation bands , representing ±n standard deviations of the regression residuals (errors).
These visual elements help traders judge how far current returns deviate from the modeled momentum trend, similar to Bollinger Bands but derived from a regression model rather than a moving average.
Key Metrics Provided
On each update, the indicator dynamically displays:
Momentum Slope (β₁): Indicates trend direction and strength. A higher absolute value implies a stronger effect.
Intercept (β₀): The predicted return when x = 0.
Pearson’s R: Correlation coefficient between x and y.
R² (Coefficient of Determination): Indicates how well the regression line explains the variance in y.
Standard Error of Residuals: Measures dispersion around the trendline.
t-Statistic of β₁: Used to evaluate statistical significance of the momentum slope.
These statistics are presented in a top-right summary table for immediate interpretation. A bottom-right signal table also summarizes key takeaways with visual indicators.
Features and Inputs
✅ Volatility-Adjusted Momentum : Reduces distortions from noisy price spikes.
✅ Custom Lookback Control : Set the number of bars to analyze regression.
✅ Extendable Trendlines : For continuous visualization into the future.
✅ Deviation Bands : Optional ±σ multipliers to detect abnormal price action.
✅ Contextual Tables : Help determine strength, direction, and significance of momentum.
✅ Separate Pane Design : Cleanly isolates statistical momentum from price chart.
How It Helps Traders
📉 Quantitative Strategy Validation:
Use the regression results to confirm whether a momentum-based strategy is worth pursuing on a specific asset or timeframe.
🔍 Regime Detection:
Track when momentum breaks down or reverses. Slope changes, drops in R², or weak t-stats can signal regime shifts.
📊 Trade Filtering:
Avoid false positives by entering trades only when momentum is both statistically significant and directionally favorable.
📈 Backtest Preparation:
Before running costly simulations, use this tool to pre-screen assets for exploitable return structures.
When to Use It
Before building or deploying a momentum strategy : Test if momentum exists and is statistically reliable.
During market transitions : Detect early signs of fading strength or reversal.
As part of an edge-stacking framework : Combine with other filters such as volatility compression, volume surges, or macro filters.
Conclusion
The Momentum Regression indicator offers a powerful fusion of statistical analysis and visual interpretation. By combining volatility-adjusted returns with real-time linear regression modeling, it helps quantify and qualify one of the most studied and traded anomalies in finance: momentum.
EMA 200 Monitor - Bybit CoinsEMA 200 Monitor - Bybit Coins
📊 OVERVIEW
The EMA 200 Monitor - Bybit Coins is an advanced indicator that automatically monitors 30 of the top cryptocurrencies traded on Bybit, alerting you when they are close to the 200-period Exponential Moving Average on the 4-hour timeframe.
This indicator was developed especially for traders who use the EMA 200 as a key support/resistance level in their swing trading and position trading strategies.
🎯 WHAT IT'S FOR
Multi-Asset Monitoring: Simultaneous monitoring of 30 cryptocurrencies without having to switch between charts
Opportunity Identification: Detects when coins are approaching the 200 EMA, a crucial technical level
Automated Alerts: Real-time notifications when a coin reaches the configured proximity
Time Efficiency: Eliminates the need to manually check chart collections
⚙️ HOW IT WORKS
Main Functionality
The indicator uses the request.security() function to fetch price data and calculate the 200 EMA of each monitored asset. With each new bar, the script:
Calculates the distance between the current price and the 200 EMA for each coin
Identifies proximity based on the configured percentage (default: 2%)
Displays results in a table organized on the chart
Generates automatic alerts when proximity is detected
Monitored Coins
Major : BTC, ETH, BNB, ADA, XRP, SOL, DOT, DOGE, AVAX
DeFi : UNI, LINK, ATOM, ICP, NEAR, OP, ARB, INJ
Memecoins : SHIB, PEPE, WIF, BONK, FLOKI
Emerging : SUI, TON, APT, POL (ex-MATIC)
📋 AVAILABLE SETTINGS
Adjustable Parameters
EMA Length (Default: 200): Exponential Moving Average Period
Proximity Percentage (Default: 2%): Distance in percentage to consider "close"
Show Table (Default: Active): Show/hide results table
Table Position: Position of the table on the chart (9 options available)
Color System
🔴 Red: Distance ≤ 1% (very close)
🟠 Orange: Distance ≤ 1.5% (close)
🟡 Yellow: Distance ≤ 2% (approaching)
🚀 HOW TO USE
Initial Configuration
Add the indicator to the 4-hour timeframe chart
Set the parameters according to your strategy
Position the table where there is no graphic preference
Setting Alerts
Click "Create Alert" in TradingView
Select the "EMA 200 Monitor" indicator
Set the notification frequency and method
Activate the alert to receive automatic notifications
Results Interpretation
The table shows:
Coin: Asset name (e.g. BTC, ETH)
Price: Current currency quote
EMA 200: Current value of the moving average
Distance: Percentage of proximity to the core code
💡 STRATEGIES TO USE
Reversal Trading
Entry: When price touches or approaches the EMA 200
Stop: Below/above the EMA with a safety margin
Target: Previous resistance/support levels
Breakout Trading
Monitoring: Watch for currencies consolidating near the EMA 200
Entry: When the media is finally broken
Confirmation: Volume and close above/below the EMA
Swing Trading
Identification: Use the monitor to detect setups in formation
Timing: Wait for the EMA 200 to approach for detailed analysis
Management: Use the EMA as a reference for stops dynamics
⚠️ IMPORTANT CONSIDERATIONS
Technical Limitations
Request Bybit data: Access to exchange symbols required
Specific timeframe: Optimized for 4-hour analysis
Minimum delay: Data updated with each new bar
Usage Recommendations
Combine with technical analysis: Use together with other indicators
Confirm the configuration: Check the graphic patterns before trading
Manage risk: Always use stop loss and adequate position sizing
Backtesting: Test your strategy before applying with real capital
Disclaimer
This indicator is a technical analysis tool and does not constitute investment advice. Always do your own analysis and manage detailed information about the risks of your operations.
🔧 TECHNICAL INFORMATION
Pine Script version: v6
Type: Indicator (overlay=true)
Compatibility: All TradingView plans
Resources used: request.security(), arrays, tables
Performance: Optimized for multiple simultaneous queries
📈 COMPETITIVE ADVANTAGES
✅ Simultaneous monitoring of 30 major assets ✅ Clear visual interface with intuitive core system ✅ Customizable alerts for different details ✅ Optimized code for maximum performance ✅ Flexible configuration adaptable to different strategies ✅ Real-time update without the need for manual refresh
Developed for traders who value efficiency and accuracy in identifying market opportunities based on the EMA 20
OrderFlow Sentiment SwiftEdgeOrderFlow Sentiment SwiftEdge
Overview
OrderFlow Sentiment SwiftEdge is a visual indicator designed to help traders analyze market dynamics through a simulated orderbook and market sentiment display. It breaks down the current candlestick into 10 price bins, estimating buy and sell volumes, and presents this data in an orderbook table alongside a sentiment row showing the buy vs. sell bias. This tool provides a quick and intuitive way to assess orderflow activity and market sentiment directly on your chart.
How It Works
The indicator consists of two main components: an Orderbook Table and a Market Sentiment Row.
Orderbook Table:
Simulates buy and sell volumes for the current candlestick by distributing total volume into 10 price bins based on price movement and proximity to open/close levels.
Displays the price bins in a table with columns for Price, Buy Volume, and Sell Volume, sorted from highest to lowest price.
Highlights the current price level in orange for easy identification, while buy and sell dominance is indicated with green (buy) or red (sell) backgrounds.
Market Sentiment Row:
Calculates the overall buy and sell sentiment (as a percentage) for the current candlestick based on the simulated orderflow data.
Displays the sentiment above the orderbook table, with the background colored green if buyers dominate or red if sellers dominate.
Features
Customizable Colors: Choose colors for buy (default: green), sell (default: red), and current price (default: orange) levels.
Lot Scaling Factor: Adjust the volume scaling factor (default: 0.1 lots per volume unit) to simulate realistic lot sizes.
Table Position: Select the table position on the chart (Top, Middle, or Bottom; default: Middle).
Default Properties
Positive Color: Green
Negative Color: Red
Current Price Color: Orange
Lot Scaling Factor: 0.1
Table Position: Middle
Usage
This indicator is ideal for traders who want to visualize orderflow dynamics and market sentiment in real-time. The orderbook table provides a snapshot of buy and sell activity at different price levels within the current candlestick, helping you identify areas of high buying or selling pressure. The sentiment row offers a quick overview of market bias, allowing you to gauge whether buyers or sellers are currently dominating. Use this information to complement your trading decisions, such as identifying potential breakout levels or confirming trend direction.
Limitations
This indicator simulates orderflow data based on candlestick price movement and volume, as TradingView does not provide tick-by-tick data. The volume distribution is an approximation and should be used as a visual aid rather than a definitive measure of market activity.
The indicator operates on the chart's current timeframe and does not incorporate higher timeframe data.
The simulated volumes are scaled using a user-defined lot scaling factor, which may not reflect actual market lot sizes.
Disclaimer
This indicator is for informational purposes only and does not guarantee trading results. Always conduct your own analysis and manage risk appropriately. The simulated orderflow data is an estimation and may not reflect real market conditions.
Statistical OHLC Projections [neo|]█ OVERVIEW
Statistical OHLC Projections is an indicator designed to offer users a customizable deep-dive on measuring historical price levels for any timeframe. The indicator separates price into two distinct levels, "Manipulation" and "Distribution", where the idea is that for higher timeframe candles, e.g. an up-close candle, the distance from the open to the bottom of the wick would constitute the Manipulation, and the rest would be considered the Distribution. By measuring out these levels, we can gain insight on how far the market may move from higher timeframe opens to their manipulations and distributions, and apply this knowledge to our analysis.
IMPORTANT: Since levels are based on the lookback available on your chart, if the levels aren't being displayed this likely means you don't have enough lookback for your selected timeframe. To check this, enable the stat table to see how many values are available for your timeframe, and either reduce the lookback or increase your chart timeframe.
█ CONCEPTS
The core concept revolves around understanding market behavior through the lens of historical candle structure. The indicator dissects OHLC data to provide statistical boundaries of expected price movement.
- Manipulation Levels: These represent the areas typically seen as liquidity grabs or false moves where price extends in one direction before reversing.
- Distribution Levels: These highlight where the bulk of directional movement tends to occur, often following the manipulation move.
The tool aggregates this data across your selected timeframe to inform you of potential levels associated with it.
█ FEATURES
Multiple Display Types: Display statistical data through two sleek styles, areas or lines. Where areas represent the area between two customizable lookback values, and lines represent one average value.
Adjustable Timeframe Selection: Whether you want to see data based on the 1D chart, or the 1W chart, anything is possible. Simply change the timeframe on the dropdown menu and if there is sufficient lookback the indicator will adjust to your requested timeframe.
Customizable Historical Lookback: By default, the indicator will measure the average 60 values of your requested timeframe, however this may be adjusted to be higher or lower based on your preference. If you want to measure recent moves, 10-20 lookback may be better for you, or if you want more data for less volatile instruments, a value of 100 may be better.
Historical Display: Prevent historical levels from being removed by unchecking the "Remove Previous Drawings" option, this will allow you to examine how the levels previously interacted with price.
NY Midnight Anchoring: By checking the "Use NY Midnight" option, you may see the projection anchored to the New York midnight open time, which is often a significant level on indices.
Alerts: You may enable alerts for any of the indicator's provided levels to stay informed, even when off the charts.
█ How to use
To use the indicator, simply apply it to your chart and modify any of your desired inputs.
By default, the indicator will provide levels for the "1D" timeframe, with a desired lookback of 60, on most instruments and plans this can be gotten when you are on the 30 minute timeframe or above.
When price reaches or extends beyond a manipulation level, observe how it reacts and whether it rejects from that level, if it does this may be an indication that the candle for the timeframe you selected may be reversing.
█ SETTINGS AND OPTIONS
Customize the indicator’s behavior, timeframe sources, and visual appearance to fit your analysis style. Each setting has been designed with flexibility in mind, whether you're working on lower or higher timeframes.
Display Mode: Switch between different display styles for levels: - Default: Shows all statistical levels as individual lines.
- Areas: Plots filled zones between two customizable lookbacks to represent the range between them.
This is ideal for visually mapping high-probability zones of price activity.
Timeframe Settings:
- Show First/Second Timeframe: Choose to show one or both timeframe projections simultaneously.
- First Timeframe / Second Timeframe: Define the higher timeframe candle you want to base calculations on (e.g., 1D, 1W).
- Use NY Midnight: When enabled and using the daily timeframe, the levels will be anchored to the New York Midnight Open (00:00 EST), a key institutional timing reference, especially useful for indices and forex.
Calculation Settings:
- Main Lookback Period: The number of historical candles used in the statistical calculations. A lower number focuses on recent price action, while a higher number smooths results across broader history.
- First Lookback / Second Lookback: Used when “Areas” mode is selected to define the range of the shaded zone. For example, an area from 20 to 60 candles creates a band between short- and long-term price behavior averages.
Visual Settings:
- Line Style: Set your preferred visual style: Solid, Dashed, or Dotted.
- Remove Previous Drawings: When enabled, only the most recent projection is shown on the chart. Disable to retain previous levels and visually backtest their reactions over time.
Color Settings:
Customize each level independently to match your chart theme:
- Manipulation High/Low
- Distribution High/Low
- Open Level
- Label Text Color
Premium/Discount Zones:
- Enable Premium/Discount Zones: Overlay price zones above and below equilibrium to visualize potential overbought (premium) and oversold (discount) areas.
- Premium/Discount Colors: Fully customizable zone colors for clarity and emphasis.
Table Settings:
- Show Statistics Table: Adds an on-chart table summarizing key levels from your active timeframe(s).
- Table Cell Color: Set the background color of the table cells for visibility.
- Table Position: Choose from preset chart locations to position the table where it works best for your layout.
Alerts:
Stay on top of price interactions with key levels even when you're away from the charts.
- Manipulation Hits (High)
- Manipulation Hits (Low)
- Distribution Hits (High)
- Distribution Hits (Low)
Uptrick Signal Density Cloud🟪 Introduction
The Uptrick Signal Density Cloud is designed to track market direction and highlight potential reversals or shifts in momentum. It plots two smoothed lines on the chart and fills the space between them (often called a “cloud”). The bars on the chart change color depending on bullish or bearish conditions, and small triangles appear when certain reversal criteria are met. A metrics table displays real-time values for easy reference.
🟩 Why These Features Have Been Linked Together
1) Dual-Line Structure
Two separate lines represent shorter- and longer-term market tendencies. Linking them in one tool allows traders to view both near-term changes and the broader directional bias in a single glance.
2) Smoothed Averages
The script offers multiple smoothing methods—exponential, simple, hull, and an optimized approach—to reduce noise. Using more than one type of moving average can help balance responsiveness with stability.
3) Density Cloud Concept
Shading the region between the two lines highlights the gap or “thickness.” A wider gap typically signals stronger momentum, while a narrower gap could indicate a weakening trend or potential market indecision. When the cloud is too wide and crosses a certain threshold defined by the user, it indicates a possible reversal. When the cloud is too narrow it may indicate a potential breakout.
🟪 Why Use This Indicator
• Trend Visibility: The color-coded lines and bars make it easier to distinguish bullish from bearish conditions.
• Momentum Tracking: Thicker cloud regions suggest stronger separation between the faster and slower lines, potentially indicating robust momentum.
• Possible Reversal Alerts: Small triangles appear within thick zones when the indicator detects a crossover, drawing attention to key moments of potential trend change.
• Quick Reference Table: A metrics table shows line values, bullish or bearish status, and cloud thickness without needing to hover over chart elements.
🟩 Inputs
1) First Smoothing Length (length1)
Default: 14
Defines the lookback period for the faster line. Lower values make the line respond more quickly to price changes.
2) Second Smoothing Length (length2)
Default: 28
Defines the lookback period for the slower line or one of the moving averages in optimized mode. It generally responds more slowly than the faster line.
3) Extra Smoothing Length (extraLength)
Default: 50
A medium-term period commonly seen in technical analysis. In optimized mode, it helps add broader perspective to the combined lines.
4) Source (source)
Default: close
Specifies the price data (for example, open, high, low, or a custom source) used in the calculations.
5) Cloud Type (cloudType)
Options: Optimized, EMA, SMA, HMA
Determines the smoothing method used for the lines. “Optimized” blends multiple exponential averages at different lengths.
6) Cloud Thickness Threshold (thicknessThreshold)
Default: 0.5
Sets the minimum separation between the two lines to qualify as a “thick” zone, indicating potentially stronger momentum.
🟪 Core Components
1) Faster and Slower Lines
Each line is smoothed according to user preferences or the optimized technique. The faster line typically reacts more quickly, while the slower line provides a broader overview.
2) Filled Density Cloud
The space between the two lines is filled to visualize in which direction the market is trending.
3) Color-Coded Bars
Price bars adopt bullish or bearish colors based on which line is on top, providing an immediate sense of trend direction.
4) Reversal Triangles
When the cloud is thick (exceeding the threshold) and the lines cross in the opposite direction, small triangles appear, signaling a possible market shift.
5) Metrics Table
A compact table shows the current values of both lines, their bullish/bearish statuses, the cloud thickness, and whether the cloud is in a “reversal zone.”
🟩 Calculation Process
1) Raw Averages
Depending on the mode, standard exponential, simple, hull, or “optimized” exponential blends are calculated.
2) Optimized Averages (if selected)
The faster line is the average of three exponential moving averages using length1, length2, and extraLength.
The slower line similarly uses those same lengths multiplied by 1.5, then averages them together for broader smoothing.
3) Difference and Threshold
The absolute gap between the two lines is measured. When it exceeds thicknessThreshold, the cloud is considered thick.
4) Bullish or Bearish Determination
If sma1 (the faster line) is above sma2 (the slower line), conditions are deemed bullish; otherwise, they are bearish. This distinction is reflected in both bar colors and cloud shading.
5) Reversal Markers
In thick zones, a crossover triggers a triangle at the point of potential reversal, alerting traders to a possible trend change.
🟪 Smoothing Methods
1) Exponential (EMA)
Prioritizes recent data for quicker responsiveness.
2) Simple (SMA)
Takes a straightforward average of the chosen period, smoothing price action but often lagging more in volatile markets.
3) Hull (HMA)
Employs a specialized formula to reduce lag while maintaining smoothness.
4) Optimized (Blended Exponential)
Combines multiple EMA calculations to strike a balance between responsiveness and noise reduction.
🟩 Cloud Logic and Reversal Zones
Cloud thickness above the defined threshold typically signals exceeding momentum and can lead to a quick reversal. During these thick periods, if the width exceeds the defined threshold, small triangles mark potential reversal points. In order for the reversal shape to show, the color of the cloud has to be the opposite. So, for example, if the cloud is bearish, and exceeds momentum, defined by the user, a bullish signal appears. The opposite conditions for a bullish signal. This approach can help traders focus on notable changes rather than minor oscillations.
🟪 Bar Coloring and Layered Lines
Bars take on bullish or bearish tints, matching the faster line’s position relative to the slower line. The lines themselves are plotted multiple times with varying opacities, creating a layered, glowing look that enhances visibility without affecting calculations.
🟩 The Metrics Table
Located in the top-right corner of the chart, this table displays:
• SMA1 and SMA2 current values.
• Bullish or bearish alignment for each line.
• Cloud thickness.
• Reversal zone status (in or out of zone).
This numeric readout allows for a quick data check without hovering over the chart.
🟪 Why These Specific Moving Average Lengths Are Used
Default lengths of 14, 28, and 50 are common in technical analysis. Fourteen captures near-term price movement without overreacting. Twenty-eight, roughly double 14, provides a moderate smoothing level. Fifty is widely regarded as a medium-term benchmark. Multiplying each length by 1.5 for the slower line enhances separation when combined with the faster line.
🟩 Originality and Usefulness
• Multi-Layered Smoothing. The user can select from several moving average modes, including a unique “optimized” blend, possibly reducing random fluctuations in the market data.
• Combined Visual and Numeric Clarity. Bars, clouds, and a real-time table merge into a single interface, enabling efficient trend analysis.
• Focus on Significant Shifts. Thick cloud zones and triangles draw attention to potentially stronger momentum changes and plausible reversals.
• Flexible Across Markets. The adjustable lengths and threshold can be tuned to different asset classes (stocks, forex, commodities, crypto) and timeframes.
By integrating multiple technical concepts—cloud-based trend detection, color coding, reversal markers, and an immediate reference table—the Uptrick Signal Density Cloud aims to streamline chart reading and decision-making.
🟪 Additional Considerations
• Timeframes. Intraday, daily, and weekly charts each yield different signals. Adjust the smoothing lengths and threshold to suit specific trading horizons.
• Market Types. Though applicable across asset classes, parameters might need tweaking to address the volatility of commodities, forex pairs, or cryptocurrencies.
• Confirmation Tools. Pairing this indicator with volume studies or support/resistance analysis can improve the reliability of signals.
• Potential Limitations. No indicator is foolproof; sudden market shifts or choppy conditions may reduce accuracy. Cautious position sizing and risk management remain essential.
🟩 Disclaimers
The Uptrick Signal Density Cloud relies on historical price data and may lag sudden moves or provide false positives in ranging conditions. Always combine it with other analytical techniques and sound risk management. This script is offered for educational purposes only and should not be considered financial advice.
🟪 Conclusion
The Uptrick Signal Density Cloud blends trend identification, momentum assessment, and potential reversal alerts in a single, user-friendly tool. With customizable smoothing methods and a focus on cloud thickness, it visually highlights important market conditions. While it cannot guarantee predictive accuracy, it can serve as a comprehensive reference for traders seeking both a quick snapshot of the current trend and deeper insights into market dynamics.
Dynamic Intensity Transition Oscillator (DITO)The Dynamic Intensity Transition Oscillator (DITO) is a comprehensive indicator designed to identify and visualize the slope of price action normalized by volatility, enabling consistent comparisons across different assets. This indicator calculates and categorizes the intensity of price movement into six states—three positive and three negative—while providing visual cues and alerts for state transitions.
Components and Functionality
1. Slope Calculation
- The slope represents the rate of change in price action over a specified period (Slope Calculation Period).
- It is calculated as the difference between the current price and the simple moving average (SMA) of the price, divided by the length of the period.
2. Normalization Using ATR
- To standardize the slope across assets with different price scales and volatilities, the slope is divided by the Average True Range (ATR).
- The ATR ensures that the slope is comparable across assets with varying price levels and volatility.
3. Intensity Levels
- The normalized slope is categorized into six distinct intensity levels:
High Positive: Strong upward momentum.
Medium Positive: Moderate upward momentum.
Low Positive: Weak upward movement or consolidation.
Low Negative: Weak downward movement or consolidation.
Medium Negative: Moderate downward momentum.
High Negative: Strong downward momentum.
4. Visual Representation
- The oscillator is displayed as a histogram, with each intensity level represented by a unique color:
High Positive: Lime green.
Medium Positive: Aqua.
Low Positive: Blue.
Low Negative: Yellow.
Medium Negative: Purple.
High Negative: Fuchsia.
Threshold levels (Low Intensity, Medium Intensity) are plotted as horizontal dotted lines for visual reference, with separate colors for positive and negative thresholds.
5. Intensity Table
- A dynamic table is displayed on the chart to show the current intensity level.
- The table's text color matches the intensity level color for easy interpretation, and its size and position are customizable.
6. Alerts for State Transitions
- The indicator includes a robust alerting system that triggers when the intensity level transitions from one state to another (e.g., from "Medium Positive" to "High Positive").
- The alert includes both the previous and current states for clarity.
Inputs and Customization
The DITO indicator offers a variety of customizable settings:
Indicator Parameters
Slope Calculation Period: Defines the period over which the slope is calculated.
ATR Calculation Period: Defines the period for the ATR used in normalization.
Low Intensity Threshold: Threshold for categorizing weak momentum.
Medium Intensity Threshold: Threshold for categorizing moderate momentum.
Intensity Table Settings
Table Position: Allows you to position the intensity table anywhere on the chart (e.g., "Bottom Right," "Top Left").
Table Size: Enables customization of table text size (e.g., "Small," "Large").
Use Cases
Trend Identification:
- Quickly assess the strength and direction of price movement with color-coded intensity levels.
Cross-Asset Comparisons:
- Use the normalized slope to compare momentum across different assets, regardless of price scale or volatility.
Dynamic Alerts:
- Receive timely alerts when the intensity transitions, helping you act on significant momentum changes.
Consolidation Detection:
- Identify periods of low intensity, signaling potential reversals or breakout opportunities.
How to Use
- Add the indicator to your chart.
- Configure the input parameters to align with your trading strategy.
Observe:
The Oscillator: Use the color-coded histogram to monitor price action intensity.
The Intensity Table: Track the current intensity level dynamically.
Alerts: Respond to state transitions as notified by the alerts.
Final Notes
The Dynamic Intensity Transition Oscillator (DITO) combines trend strength detection, cross-asset comparability, and real-time alerts to offer traders an insightful tool for analyzing market conditions. Its user-friendly visualization and comprehensive alerting make it suitable for both novice and advanced traders.
Disclaimer: This indicator is for educational purposes and is not financial advice. Always perform your own analysis before making trading decisions.
Average Price Range Screener [KFB Quant]Average Price Range Screener
Overview:
The Average Price Range Screener is a technical analysis tool designed to provide insights into the average price volatility across multiple symbols over user-defined time periods. The indicator compares price ranges from different assets and displays them in a visual table and chart for easy reference. This can be especially helpful for traders looking to identify symbols with high or low volatility across various time frames.
Key Features:
Multiple Symbols Supported:
The script allows for analysis of up to 10 symbols, such as major cryptocurrencies and market indices. Symbols can be selected by the user and configured for tracking price volatility.
Dynamic Range Calculation:
The script calculates the average price range of each symbol over three distinct time periods (default are 30, 60, and 90 bars). The price range for each symbol is calculated as a percentage of the bar's high-to-low difference relative to its low value.
Range Visualization:
The results are visually represented using:
- A color-coded table showing the calculated average ranges of each symbol and the current chart symbol.
- A line plot that visually tracks the volatility for each symbol on the chart, with color gradients representing the range intensity from low (red/orange) to high (blue/green).
Customizable Inputs:
- Length Inputs: Users can define the time lengths (default are 30, 60, and 90 bars) for calculating average price ranges for each symbol.
- Symbol Inputs: 10 symbols can be tracked at once, with default values set to popular crypto pairs and indices.
- Color Inputs: Users can customize the color scheme for the range values displayed in the table and chart.
Real-Time Ranking:
The indicator ranks symbols by their average price range, providing a clear view of which assets are exhibiting higher volatility at any given time.
Each symbol's range value is color-coded based on its relative volatility within the selected symbols (using a gradient from low to high range).
Data Table:
The table shows the average range values for each symbol in real-time, allowing users to compare volatility across multiple assets at a glance. The table is dynamically updated as new data comes in.
Interactive Labels:
The indicator adds labels to the chart, showing the average range for each symbol. These labels adjust in real-time as the price range values change, giving users an immediate view of volatility rankings.
How to Use:
Set Time Periods: Adjust the time periods (lengths) to match your trading strategy's timeframe and volatility preference.
Symbol Selection: Add and track the price range for your preferred symbols (cryptocurrencies, stocks, indices).
Monitor Volatility: Use the visual table and plot to identify symbols with higher or lower volatility, and adjust your trading strategy accordingly.
Interpret the Table and Chart: Ranges that are color-coded from red/orange (lower volatility) to blue/green (higher volatility) allow you to quickly gauge which symbols are most volatile.
Disclaimer: This tool is provided for informational and educational purposes only and should not be considered as financial advice. Always conduct your own research and consult with a licensed financial advisor before making any investment decisions.
Burst PowerThe Burst Power indicator is to be used for Indian markets where most stocks have a maximum price band limit of 20%.
This indicator is intended to identify stocks with high potential for significant price movements. By analysing historical price action over a user-defined lookback period, it calculates a Burst Power score that reflects the stock's propensity for rapid and substantial moves. This can be helpful for stock selection in strategies involving momentum bursts, swing trading, or identifying stocks with explosive potential.
Key Components
____________________
Significant Move Counts:
5% Moves: Counts the number of days within the lookback period where the stock had a positive close-to-close move between 5% and 10%.
10% Moves: Counts the number of days with a positive close-to-close move between 10% and 19%.
19% Moves: Counts the number of days with a positive close-to-close move of 19% or more.
Maximum Price Move (%):
Identifies the largest positive close-to-close percentage move within the lookback period, along with the date it occurred.
Burst Power Score:
A composite score calculated using the counts of significant moves: Burst Power =(Count5%/5) +(Count10%/2) + (Count19%/0.5)
The score is then rounded to the nearest whole number.
A higher Burst Power score indicates a higher frequency of significant price bursts.
Visual Indicators:
Table Display: Presents all the calculated data in a customisable table on the chart.
Markers on Chart: Plots markers on the chart where significant moves occurred, aiding visual analysis.
Using the Lookback Period
____________________________
The lookback period determines how much historical data the indicator analyses. Users can select from predefined options:
3 Months
6 Months
1 Year
3 Years
5 Years
A shorter lookback period focuses on recent price action, which may be more relevant for short-term trading strategies. A longer lookback period provides a broader historical context, useful for identifying long-term patterns and behaviors.
Interpreting the Burst Power Score
__________________________________
High Burst Power Score (≥15):
Indicates the stock frequently experiences significant price moves.
Suitable for traders seeking quick momentum bursts and swing trading opportunities.
Stocks with high scores may be more volatile but offer potential for rapid gains.
Moderate Burst Power Score (10 to 14):
Suggests occasional significant price movements.
May suit traders looking for a balance between volatility and stability.
Low Burst Power Score (<10):
Reflects fewer significant price bursts.
Stocks are more likely to exhibit longer, sustainable, but slower price trends.
May be preferred by traders focusing on steady growth or longer-term investments.
Note: Trading involves uncertainties, and the Burst Power score should be considered as one of many factors in a comprehensive trading strategy. It is essential to incorporate broader market analysis and risk management practices.
Customisation Options
_________________________
The indicator offers several customisation settings to tailor the display and functionality to individual preferences:
Display Mode:
Full Mode: Shows the detailed table with all components, including significant move counts, maximum price move, and the Burst Power score.
Mini Mode: Displays only the Burst Power score and its corresponding indicator (green, orange, or red circle).
Show Latest Date Column:
Toggle the display of the "Latest Date" column in the table, which shows the most recent occurrence of each significant move category.
Theme (Dark Mode):
Switch between Dark Mode and Light Mode for better visual integration with your chart's color scheme.
Table Position and Size:
Position: Place the table at various locations on the chart (top, middle, bottom; left, center, right).
Size: Adjust the table's text size (tiny, small, normal, large, huge, auto) for optimal readability.
Header Size: Customise the font size of the table headers (Small, Medium, Large).
Color Settings:
Disable Colors in Table: Option to display the table without background colors, which can be useful for printing or if colors are distracting.
Bullish Closing Filter:
Another customisation here is to count a move only when the closing for the day is strong. For this, we have an additional filter to see if close is within the chosen % of the range of the day. Closing within the top 1/3, for instance, indicates a way more bullish day tha, say, closing within the bottom 25%.
Move Markers on chart:
The indicator also marks out days with significant moves. You can choose to hide or show the markers on the candles/bars.
Practical Applications
________________________
Momentum Trading: High Burst Power scores can help identify stocks that are likely to experience rapid price movements, suitable for momentum traders.
Swing Trading: Traders looking for short- to medium-term opportunities may focus on stocks with moderate to high Burst Power scores.
Positional Trading: Lower Burst Power scores may indicate steadier stocks that are less prone to volatility, aligning with long-term investment strategies.
Risk Management: Understanding a stock's propensity for significant moves can aid in setting appropriate stop-loss and take-profit levels.
Disclaimer: Trading involves significant risk, and past performance is not indicative of future results. The Burst Power indicator is intended for educational purposes and should not be construed as financial advice. Always conduct thorough research and consult with a qualified financial professional before making investment decisions.
Ticker Tape█ OVERVIEW
This indicator creates a dynamic, scrolling display of multiple securities' latest prices and daily changes, similar to the ticker tapes on financial news channels and the Ticker Tape Widget . It shows realtime market information for a user-specified list of symbols along the bottom of the main chart pane.
█ CONCEPTS
Ticker tape
Traditionally, a ticker tape was a continuous, narrow strip of paper that displayed stock prices, trade volumes, and other financial and security information. Invented by Edward A. Calahan in 1867, ticker tapes were the earliest method for electronically transmitting live stock market data.
A machine known as a "stock ticker" received stock information via telegraph, printing abbreviated company names, transaction prices, and other information in a linear sequence on the paper as new data came in. The term "ticker" in the name comes from the "tick" sound the machine made as it printed stock information. The printed tape provided a running record of trading activity, allowing market participants to stay informed on recent market conditions without needing to be on the exchange floor.
In modern times, electronic displays have replaced physical ticker tapes. However, the term "ticker" remains persistent in today's financial lexicon. Nowadays, ticker symbols and digital tickers appear on financial news networks, trading platforms, and brokerage/exchange websites, offering live updates on market information. Modern electronic displays, thankfully, do not rely on telegraph updates to operate.
█ FEATURES
Requesting a list of securities
The "Symbol list" text box in the indicator's "Settings/Inputs" tab allows users to list up to 40 symbols or ticker Identifiers. The indicator dynamically requests and displays information for each one. To add symbols to the list, enter their names separated by commas . For example: "BITSTAMP:BTCUSD, TSLA, MSFT".
Each item in the comma-separated list must represent a valid symbol or ticker ID. If the list includes an invalid symbol, the script will raise a runtime error.
To specify a broker/exchange for a symbol, include its name as a prefix with a colon in the "EXCHANGE:SYMBOL" format. If a symbol in the list does not specify an exchange prefix, the indicator selects the most commonly used exchange when requesting the data.
Realtime updates
This indicator requests symbol descriptions, current market prices, daily price changes, and daily change percentages for each ticker from the user-specified list of symbols or ticker identifiers. It receives updated information for each security after new realtime ticks on the current chart.
After a new realtime price update, the indicator updates the values shown in the tape display and their colors.
The color of the percentages in the tape depends on the change in price from the previous day . The text is green when the daily change is positive, red when the value is negative, and gray when the value is 0.
The color of each displayed price depends on the change in value from the last recorded update, not the change over a daily period. For example, if a security's price increases in the latest update, the ticker tape shows that price with green text, even if the current price is below the previous day's closing price. This behavior allows users to monitor realtime directional changes in the requested securities.
NOTE: Pine scripts execute on realtime bars when new ticks are available in the chart's data feed. If no new updates are available from the chart's realtime feed, it may cause a delay in the data the indicator receives.
Ticker motion
This indicator's tape display shows a list of security information that incrementally scrolls horizontally from right to left after new chart updates, providing a dynamic visual stream of current market data. The scrolling effect works by using a counter that increments across successive intervals after realtime ticks to control the offset of each listed security. Users can set the initial scroll offset with the "Offset" input in the "Settings/Inputs" tab.
The scrolling rate of the ticker tape display depends on the realtime ticks available from the chart's data feed. Using the indicator on a chart with frequent realtime updates results in smoother scrolling. If no new realtime ticks are available in the chart's feed, the ticker tape does not move. Users can also deactivate the scrolling feature by toggling the "Running" input in the indicator's settings.
█ FOR Pine Script™ CODERS
• This script utilizes dynamic requests to iteratively fetch information from multiple contexts using a single request.security() instance in the code. Previously, `request.*()` functions were not allowed within the local scopes of loops or conditional structures, and most `request.*()` function parameters, excluding `expression`, required arguments of a simple or weaker qualified type. The new `dynamic_requests` parameter in script declaration statements enables more flexibility in how scripts can use `request.*()` calls. When its value is `true`, all `request.*()` functions can accept series arguments for the parameters that define their requested contexts, and `request.*()` functions can execute within local scopes. See the Dynamic requests section of the Pine Script™ User Manual to learn more.
• Scripts can execute up to 40 unique `request.*()` function calls. A `request.*()` call is unique only if the script does not already call the same function with the same arguments. See this section of the User Manual's Limitations page for more information.
• This script converts a comma-separated "string" list of symbols or ticker IDs into an array . It then loops through this array, dynamically requesting data from each symbol's context and storing the results within a collection of custom `Tape` objects . Each `Tape` instance holds information about a symbol, which the script uses to populate the table that displays the ticker tape.
• This script uses the varip keyword to declare variables and `Tape` fields that update across ticks on unconfirmed bars without rolling back. This behavior allows the script to color the tape's text based on the latest price movements and change the locations of the table cells after realtime updates without reverting. See the `varip` section of the User Manual to learn more about using this keyword.
• Typically, when requesting higher-timeframe data with request.security() using barmerge.lookahead_on as the `lookahead` argument, the `expression` argument should use the history-referencing operator to offset the series, preventing lookahead bias on historical bars. However, the request.security() call in this script uses barmerge.lookahead_on without offsetting the `expression` because the script only displays results for the latest historical bar and all realtime bars, where there is no future information to leak into the past. Instead, using this call on those bars ensures each request fetches the most recent data available from each context.
• The request.security() instance in this script includes a `calc_bars_count` argument to specify that each request retrieves only a minimal number of bars from the end of each symbol's historical data feed. The script does not need to request all the historical data for each symbol because it only shows results on the last chart bar that do not depend on the entire time series. In this case, reducing the retrieved bars in each request helps minimize resource usage without impacting the calculated results.
Look first. Then leap.
Uptrick: TimeFrame Trends: Performance & Sentiment Indicator### **Uptrick: TimeFrame Trends: Performance & Sentiment Indicator (TFT) - In-Depth Explanation**
#### **Overview**
The **Uptrick: TimeFrame Trends: Performance & Sentiment Indicator (TFT)** is a sophisticated trading tool designed to provide traders with a comprehensive view of market trends across multiple timeframes, combined with a sentiment gauge through the Relative Strength Index (RSI). This indicator offers a unique blend of performance analysis, sentiment evaluation, and visual signal generation, making it an invaluable resource for traders who seek to understand both the macro and micro trends within a financial instrument.
#### **Purpose**
The primary purpose of the TFT indicator is to empower traders with the ability to assess the performance of an asset over various timeframes while simultaneously gauging market sentiment through the RSI. By analyzing price changes over periods ranging from one week to one year, and complementing this with sentiment signals, TFT enables traders to make informed decisions based on a well-rounded analysis of historical price performance and current market conditions.
#### **Key Components and Features**
1. **Multi-Timeframe Performance Analysis:**
- **Performance Lookback Periods:**
- The TFT indicator calculates the percentage price change over several predefined timeframes: 7 days (1 week), 14 days (2 weeks), 30 days (1 month), 180 days (6 months), and 365 days (1 year). These timeframes provide a layered view of how an asset has performed over short, medium, and long-term periods.
- **Percentage Change Calculation:**
- The indicator computes the percentage change for each timeframe by comparing the current closing price to the closing price at the start of each period. This gives traders insight into the strength and direction of the trend over different periods, helping them identify consistent trends or potential reversals.
2. **Sentiment Analysis Using RSI:**
- **Relative Strength Index (RSI):**
- RSI is a widely-used momentum oscillator that measures the speed and change of price movements. It oscillates between 0 and 100 and is typically used to identify overbought or oversold conditions. In TFT, the RSI is calculated using a 14-period lookback, which is standard for most RSI implementations.
- **RSI Smoothing with EMA:**
- To refine the RSI signal and reduce noise, TFT applies a 10-period Exponential Moving Average (EMA) to the RSI values. This smoothed RSI is then used to generate buy, sell, and neutral signals based on its position relative to the 50 level:
- **Buy Signal:** Triggered when the smoothed RSI crosses above 50, indicating bullish sentiment.
- **Sell Signal:** Triggered when the smoothed RSI crosses below 50, indicating bearish sentiment.
- **Neutral Signal:** Triggered when the smoothed RSI equals 50, suggesting indecision or a balanced market.
3. **Visual Signal Generation:**
- **Signal Plots:**
- TFT provides clear visual cues directly on the price chart by plotting shapes at the points where buy, sell, or neutral signals are generated. These shapes are color-coded (green for buy, red for sell, yellow for neutral) and are positioned below or above the price bars for easy identification.
- **First Occurrence Trigger:**
- To avoid clutter and focus on significant market shifts, TFT only triggers the first occurrence of each signal type. This feature helps traders concentrate on the most relevant signals without being overwhelmed by repeated alerts.
4. **Customizable Performance & Sentiment Table:**
- **Table Display:**
- The TFT indicator includes a customizable table that displays the calculated percentage changes for each timeframe. This table is positioned on the chart according to user preference (top-left, top-right, bottom-left, bottom-right) and provides a quick reference to the asset’s performance across multiple periods.
- **Dynamic Text Color:**
- To enhance readability and provide immediate visual feedback, the text color in the table changes based on the direction of the percentage change: green for positive (upward movement) and red for negative (downward movement). This color-coding helps traders quickly assess whether the asset is in an uptrend or downtrend for each period.
- **Customizable Font Size:**
- Traders can adjust the font size of the table to fit their chart layout and personal preferences, ensuring that the information is accessible without being intrusive.
5. **Flexibility and Customization:**
- **Lookback Period Customization:**
- While the default lookback periods are set for common trading intervals (7 days, 14 days, etc.), these can be adjusted to match different trading strategies or market conditions. This flexibility allows traders to tailor the indicator to focus on the timeframes most relevant to their analysis.
- **RSI and EMA Settings:**
- The length of the RSI calculation and the smoothing EMA can also be customized. This is particularly useful for traders who prefer shorter or longer periods for their momentum analysis, allowing them to fine-tune the sensitivity of the indicator.
- **Table Position and Appearance:**
- The table’s position on the chart, along with its font size and colors, is fully customizable. This ensures that the indicator can be integrated seamlessly into any chart setup without obstructing key price data.
#### **Use Cases and Applications**
1. **Trend Identification and Confirmation:**
- **Short-Term Traders:**
- Traders focused on short-term movements can use the 7-day and 14-day performance metrics to identify recent trends and momentum shifts. The RSI signals provide additional confirmation, helping traders enter or exit positions based on the latest market sentiment.
- **Swing Traders:**
- For those holding positions over days to weeks, the 30-day and 180-day performance data are particularly useful. These metrics highlight medium-term trends, and when combined with RSI signals, they provide a robust framework for swing trading strategies.
- **Long-Term Investors:**
- Long-term investors can benefit from the 1-year performance data to gauge the overall health and direction of an asset. The indicator’s ability to track performance across different periods helps in identifying long-term trends and potential reversal points.
2. **Sentiment Analysis and Market Timing:**
- **Market Sentiment Tracking:**
- By using RSI in conjunction with performance metrics, TFT provides a clear picture of market sentiment. Traders can use this information to time their entries and exits more effectively, aligning their trades with periods of strong bullish or bearish sentiment.
- **Avoiding False Signals:**
- The smoothing of RSI helps reduce noise and avoid false signals that are common in volatile markets. This makes the TFT indicator a reliable tool for identifying true market trends and avoiding whipsaws that can lead to losses.
3. **Comprehensive Market Analysis:**
- **Multi-Timeframe Analysis:**
- TFT’s ability to analyze multiple timeframes simultaneously makes it an excellent tool for comprehensive market analysis. Traders can compare short-term and long-term performance to understand the broader market context, making it easier to align their trading strategies with the overall trend.
- **Performance Benchmarking:**
- The percentage change metrics provide a clear benchmark for an asset’s performance over time. This information can be used to compare the asset against broader market indices or other assets, helping traders make more informed decisions about where to allocate their capital.
4. **Custom Strategy Development:**
- **Tailoring to Specific Markets:**
- TFT can be customized to suit different markets, whether it’s stocks, forex, commodities, or cryptocurrencies. For instance, traders in volatile markets may opt for shorter lookback periods and more sensitive RSI settings, while those in stable markets may prefer longer periods for a smoother analysis.
- **Integrating with Other Indicators:**
- TFT can be used alongside other technical indicators to create a more comprehensive trading strategy. For example, combining TFT with moving averages, Bollinger Bands, or MACD can provide additional layers of confirmation and reduce the likelihood of false signals.
#### **Best Practices for Using TFT**
- **Regularly Adjust Lookback Periods:**
- Depending on the market conditions and the asset being traded, it’s important to regularly review and adjust the lookback periods for the performance metrics. This ensures that the indicator remains relevant and responsive to current market trends.
- **Combine with Volume Analysis:**
- While TFT provides a solid foundation for trend and sentiment analysis, combining it with volume indicators can further enhance its effectiveness. Volume can confirm the strength of a trend or signal potential reversals when divergences occur.
- **Use RSI with Other Momentum Indicators:**
- Although RSI is a powerful tool on its own, using it alongside other momentum indicators like Stochastic Oscillator or MACD can provide additional confirmation and help refine entry and exit points.
- **Customize Table Settings for Clarity:**
- Ensure that the performance table is positioned and sized appropriately on the chart. It should be easily readable without obstructing important price data. Adjust the text size and colors as needed to maintain clarity.
- **Monitor Multiple Timeframes:**
- Utilize the multi-timeframe analysis feature of TFT to monitor trends across different periods. This helps in identifying the dominant trend and avoiding trades that go against the broader market direction.
#### **Conclusion**
The **Uptrick: TimeFrame Trends: Performance & Sentiment Indicator (TFT)** is a comprehensive and versatile tool that combines the power of multi-timeframe performance analysis with sentiment gauging through RSI. Its ability to customize and adapt to various trading strategies and markets makes it a valuable asset for traders at all levels. By offering a clear visual representation of trends and market sentiment, TFT empowers traders to make more informed and confident trading decisions, whether they are focusing on short-term price movements or long-term investment opportunities. With its deep integration of performance metrics and sentiment analysis, TFT stands out as a must-have indicator for any trader looking to gain a holistic understanding of market dynamics.
Uptrick: Volume-Weighted EMA Signal### **Uptrick: Volume-Weighted EMA Signal (UVES) Indicator - Comprehensive Description**
#### **Overview**
The **Uptrick: Volume-Weighted EMA Signal (UVES)** is an advanced, multifaceted trading indicator meticulously designed to provide traders with a holistic view of market trends by integrating Exponential Moving Averages (EMA) with volume analysis. This indicator not only identifies the direction of market trends through dynamic EMAs but also evaluates the underlying strength of these trends using real-time volume data. UVES is a versatile tool suitable for various trading styles and markets, offering a high degree of customization to meet the specific needs of individual traders.
#### **Purpose**
The UVES indicator aims to enhance traditional trend-following strategies by incorporating a critical yet often overlooked component: volume. Volume is a powerful indicator of market strength, providing insights into the conviction behind price movements. By merging EMA-based trend signals with detailed volume analysis, UVES offers a more nuanced and reliable approach to identifying trading opportunities. This dual-layer analysis allows traders to differentiate between strong trends supported by significant volume and weaker trends that may be prone to reversals.
#### **Key Features and Functions**
1. **Dynamic Exponential Moving Average (EMA):**
- The core of the UVES indicator is its dynamic EMA, calculated over a customizable period. The EMA is a widely used technical indicator that smooths price data to identify the underlying trend. In UVES, the EMA is dynamically colored—green when the current EMA value is above the previous value, indicating an uptrend, and red when below, signaling a downtrend. This visual cue helps traders quickly assess the trend direction without manually calculating or interpreting raw data.
2. **Comprehensive Moving Average Customization:**
- While the EMA is the default moving average in UVES, traders can select from various other moving average types, including Simple Moving Average (SMA), Smoothed Moving Average (SMMA), Weighted Moving Average (WMA), and Volume-Weighted Moving Average (VWMA). Each type offers unique characteristics:
- **SMA:** Provides a simple average of prices over a specified period, suitable for identifying long-term trends.
- **EMA:** Gives more weight to recent prices, making it more responsive to recent market movements.
- **SMMA (RMA):** A slower-moving average that reduces noise, ideal for capturing smoother trends.
- **WMA:** Weighs prices based on their order in the dataset, making recent prices more influential.
- **VWMA:** Integrates volume data, emphasizing price movements that occur with higher volume, making it particularly useful in volume-sensitive markets.
3. **Signal Line for Trend Confirmation:**
- UVES includes an optional signal line, which applies a secondary moving average to the primary EMA. This signal line can be used to smooth out the EMA and confirm trend changes. The signal line’s color changes based on its slope—green for an upward slope and red for a downward slope—providing a clear visual confirmation of trend direction. Traders can adjust the length and type of this signal line, allowing them to tailor the indicator’s responsiveness to their trading strategy.
4. **Buy and Sell Signal Generation:**
- UVES generates explicit buy and sell signals based on the interaction between the EMA and the signal line. A **buy signal** is triggered when the EMA transitions from a red (downtrend) to a green (uptrend), indicating a potential entry point. Conversely, a **sell signal** is triggered when the EMA shifts from green to red, suggesting an exit or shorting opportunity. These signals are displayed directly on the chart as upward or downward arrows, making them easily identifiable even during fast market conditions.
5. **Volume Analysis with Real-Time Buy/Sell Volume Table:**
- One of the standout features of UVES is its integration of volume analysis, which calculates and displays the volume attributed to buying and selling activities. This analysis includes:
- **Buy Volume:** The portion of the total volume associated with price increases (close higher than open).
- **Sell Volume:** The portion of the total volume associated with price decreases (close lower than open).
- **Buy/Sell Ratio:** A ratio of buy volume to sell volume, providing a quick snapshot of market sentiment.
- These metrics are presented in a real-time table positioned in the top-right corner of the chart, with customizable colors and formatting. The table updates with each new bar, offering continuous feedback on the strength and direction of the market trend based on volume data.
6. **Customizable Settings and User Control:**
- **EMA Length and Source:** Traders can specify the lookback period for the EMA, adjusting its sensitivity to price changes. The source for EMA calculations can also be customized, with options such as close, open, high, low, or other custom price series.
- **Signal Line Customization:** The signal line’s length, type, and width can be adjusted to suit different trading strategies, allowing traders to optimize the balance between trend detection and noise reduction.
- **Offset Adjustment:** The offset feature allows users to shift the EMA and signal line forward or backward on the chart. This can help align the indicator with specific price action or adjust for latency in decision-making processes.
- **Volume Table Positioning and Formatting:** The position, size, and color scheme of the volume table are fully customizable, enabling traders to integrate the table seamlessly into their chart setup without cluttering the visual workspace.
7. **Versatility Across Markets and Trading Styles:**
- UVES is designed to be effective across a wide range of financial markets, including Forex, stocks, cryptocurrencies, commodities, and indices. Its adaptability to different markets is supported by its comprehensive customization options and the inclusion of volume analysis, which is particularly valuable in markets where volume plays a crucial role in price movement.
#### **How Different Traders Can Benefit from UVES**
1. **Trend Followers:**
- Trend-following traders will find UVES particularly beneficial for identifying and riding trends. The dynamic EMA and signal line provide clear visual cues for trend direction, while the volume analysis helps confirm the strength of these trends. This combination allows trend followers to stay in profitable trades longer and exit when the trend shows signs of weakening.
2. **Volume-Based Traders:**
- Traders who focus on volume as a key indicator of market strength can leverage the UVES volume table to gain insights into the buying and selling pressure behind price movements. By monitoring the buy/sell ratio, these traders can identify periods of strong conviction (high buy volume) or potential reversals (high sell volume) with greater accuracy.
3. **Scalpers and Day Traders:**
- For traders operating on shorter time frames, UVES provides quick and reliable signals that are essential for making rapid trading decisions. The ability to customize the EMA length and type allows scalpers to fine-tune the indicator for responsiveness, while the volume analysis offers an additional layer of confirmation to avoid false signals.
4. **Swing Traders:**
- Swing traders, who typically hold positions for several days to weeks, can use UVES to identify medium-term trends and potential entry and exit points. The indicator’s ability to filter out market noise through the signal line and volume analysis makes it ideal for capturing significant price movements without being misled by short-term volatility.
5. **Position Traders and Long-Term Investors:**
- Even long-term investors can benefit from UVES by using it to identify major trend reversals or confirm the strength of long-term trends. The flexibility to adjust the EMA and signal line to longer periods ensures that the indicator remains relevant for detecting shifts in market sentiment over extended time frames.
#### **Optimal Settings for Different Markets**
- **Forex Markets:**
- **EMA Length:** 9 to 14 periods.
- **Signal Line:** Use VWMA or WMA for the signal line to incorporate volume data, which is crucial in the highly liquid Forex markets.
- **Best Use:** Short-term trend following, with an emphasis on identifying rapid changes in market sentiment.
- **Stock Markets:**
- **EMA Length:** 20 to 50 periods.
- **Signal Line:** SMA or EMA with a slightly longer length (e.g., 50 periods) to capture broader market trends.
- **Best Use:** Medium to long-term trend identification, with volume analysis confirming the strength of institutional buying or selling.
- **Cryptocurrency Markets:**
- **EMA Length:** 9 to 12 periods, due to the high volatility in crypto markets.
- **Signal Line:** SMMA or EMA for smoothing out extreme price fluctuations.
- **Best Use:** Identifying entry and exit points in volatile markets, with the volume table providing insights into market manipulation or sudden shifts in trader sentiment.
- **Commodity Markets:**
- **EMA Length:** 14 to 21 periods.
- **Signal Line:** WMA or VWMA, considering the impact of trading volume on commodity prices.
- **Best Use:** Capturing medium-term price movements and confirming trend strength with volume data.
#### **Customization for Advanced Users**
- **Advanced Offset Usage:** Traders can experiment with different offset values to see how shifting the EMA and signal line impacts the timing of buy/sell signals. This can be particularly useful in markets with known latency or for strategies that require a delayed confirmation of trend changes.
- **Volume Table Integration:** The position, size, and colors of the volume table can be adjusted to fit seamlessly into any trading setup. For example, a trader might choose to position the table in the bottom-right corner and use a smaller size to keep the focus on price action while still having access to volume data.
- **Signal Filtering:** By combining the signal line with the primary EMA, traders can filter out false signals during periods of low volatility or when the market is range-bound. Adjusting the length of the signal line allows for greater control over the sensitivity of the trend detection.
#### **Conclusion**
The **Uptrick: Volume-Weighted EMA Signal (UVES)** is a powerful and adaptable indicator designed for traders who demand more from their technical analysis tools. By integrating dynamic EMA trend signals with real-time volume analysis, UVES offers a comprehensive view of market conditions, making it an invaluable resource for identifying trends, confirming signals, and understanding market sentiment. Whether you are a day trader, swing trader, or long-term investor, UVES provides the versatility, precision, and customization needed to make more informed and profitable trading decisions. With its ability to adapt to various markets and trading styles, UVES is not just an indicator but a complete trend analysis solution.
Bearish vs Bullish ArgumentsThe Bearish vs Bullish Arguments Indicator is a tool designed to help traders visually assess and compare the number of bullish and bearish arguments based on their custom inputs. This script enables users to input up to five bullish and five bearish arguments, dynamically displaying the bias on a clean and customizable table on the chart. This provides traders with a clear, visual representation of the market sentiment they have identified.
Key Features:
Customizable Inputs: Users can input up to five bullish and five bearish arguments, which are displayed in a table on the chart.
Bias Calculation: The script calculates the bias (Bullish, Bearish, or Neutral) based on the number of bullish and bearish arguments provided.
Color Customization: Users can customize the colors for the table background, text, and headers, ensuring the table fits seamlessly into their charting environment.
Reset Functionality: A reset switch allows users to clear all input arguments with a single click, making it easy to start fresh.
How It Works:
Input Fields: The script provides input fields for up to five bullish and five bearish arguments. Each input is a simple text field where users can describe their arguments.
Bias Calculation: The script counts the number of non-empty bullish and bearish arguments and determines the overall bias. The bias is displayed in the table with a dynamically changing color to indicate whether the market sentiment is bullish, bearish, or neutral.
Customizable Table: The table is positioned on the chart according to the user's preference (top-left, top-right, bottom-left, bottom-right) and can be customized in terms of background color and text color.
How to Use:
Add the Indicator: Add the Bearish vs Bullish Arguments Indicator to your chart.
Input Arguments: Enter up to five bullish and five bearish arguments in the provided input fields in the script settings.
Customize Appearance: Adjust the table's background color, text color, and position on the chart to fit your preferences.
Example Use Case:
A trader might use this indicator to visually balance their arguments for and against a particular trade setup. By entering their reasons for a bullish outlook in the bullish argument fields and their reasons for a bearish outlook in the bearish argument fields, they can quickly see which side has more supporting points and make a more informed trading decision.
This script was inspired by Arjoio's concepts
Ohlson O-Score IndicatorThe Ohlson O-Score is a financial metric developed by Olof Ohlson to predict the probability of a company experiencing financial distress. It is widely used by investors and analysts as a key tool for financial analysis.
Inputs:
Period: Select the financial period for analysis, either "FY" (Fiscal Year) or "FQ" (Fiscal Quarter).
Country: Specify the country for Gross Net Product data. This helps in tailoring the analysis to specific economic conditions.
Gross Net Product : Define the number of years back for the index to be set at 100. This parameter provides a historical context for the analysis.
Table Display : Customize the display of various tables to suit your preference and analytical needs.
Key Features:
Predictive Power : The Ohlson O-Score is renowned for its predictive power in assessing the financial health of a company. It incorporates multiple financial ratios and indicators to provide a comprehensive view.
Financial Distress Prediction : Use the O-Score to gauge the likelihood of a company facing financial distress in the future. It's a valuable tool for risk assessment.
Country-Specific Analysis : Tailor the analysis to the economic conditions of a specific country, ensuring a more accurate evaluation of financial health.
Historical Context : Set the Gross Net Product index at a specific historical point, allowing for a deeper understanding of how a company's financial health has evolved over time.
How to Use:
Select Period : Choose either Fiscal Year or Fiscal Quarter based on your preference.
Specify Country : Input the country for country-specific Gross Net Product data.
Set Historical Context : Determine the number of years back for the index to be set at 100, providing historical context to your analysis.
Custom Table Display : Personalize the display of various tables to focus on the metrics that matter most to you.
Calculation and component description
Here is the description of O-score components as found in orginal Ohlson publication :
1. SIZE = log(total assets/GNP price-level index). The index assumes a base value of 100 for 1968. Total assets are as reported in dollars. The index year is as of the year prior to the year of the balance sheet date. The procedure assures a real-time implementation of the model. The log transform has an important implication. Suppose two firms, A and B, have a balance sheet date in the same year, then the sign of PA - Pe is independent of the price-level index. (This will not follow unless the log transform is applied.) The latter is, of course, a desirable property.
2. TLTA = Total liabilities divided by total assets.
3. WCTA = Working capital divided by total assets.
4. CLCA = Current liabilities divided by current assets.
5. OENEG = One if total liabilities exceeds total assets, zero otherwise.
6. NITA = Net income divided by total assets.
7. FUTL = Funds provided by operations divided by total liabilities
8. INTWO = One if net income was negative for the last two years, zero otherwise.
9. CHIN = (NI, - NI,-1)/(| NIL + (NI-|), where NI, is net income for the most recent period. The denominator acts as a level indicator. The variable is thus intended to measure change in net income. (The measure appears to be due to McKibben ).
Interpretation
The foundational model for the O-Score evolved from an extensive study encompassing over 2000 companies, a notable leap from its predecessor, the Altman Z-Score, which examined a mere 66 companies. In direct comparison, the O-Score demonstrates significantly heightened accuracy in predicting bankruptcy within a 2-year horizon.
While the original Z-Score boasted an estimated accuracy of over 70%, later iterations reached impressive levels of 90%. Remarkably, the O-Score surpasses even these high benchmarks in accuracy.
It's essential to acknowledge that no mathematical model achieves 100% accuracy. While the O-Score excels in forecasting bankruptcy or solvency, its precision can be influenced by factors both internal and external to the formula.
For the O-Score, any results exceeding 0.5 indicate a heightened likelihood of the firm defaulting within two years. The O-Score stands as a robust tool in financial analysis, offering nuanced insights into a company's financial stability with a remarkable degree of accuracy.